Types of parameters for a private function
What types of parameters can be used for a private function?
text -> ok
number -> ok
array -> ?
record -> ?
date -> ?
table -> ?
Please someone reply to this. I'm also trying to create a function with an array parameter but dont know how
As far as I can tell the only data types you can use in a user-defined function are the following...
Number, Text, Date, Time and DateTime
If you try use array, you will get an "Unknown type" error like this...
As long as an array is defined before the user-defined function, you can manipulate the array inside the function.
So, I had some time to kill because the retards in Birmingham, Al closed two lanes of traffic on I-459 for road construction. They could have sent traffic through downtown this being a Sunday and all!!! Here's a version of a user-defined function that replaces a single array item...
let myArray := ["Python", "Ruby", "Java", "C++"];
function replaceArrayItem(indexItem: text, index: number) do
switch index do
myArray := [indexItem, item(myArray, 1), item(myArray, 2), item(myArray, 3)]
myArray := [item(myArray, 0), indexItem, item(myArray, 2), item(myArray, 3)]
myArray := [item(myArray, 0), item(myArray, 1), indexItem, item(myArray, 3)]
myArray := [item(myArray, 0), item(myArray, 1), item(myArray, 2), indexItem]
The screenshot cuts off some of the code...
Ooops, to get the output...
then click run
I can't remember where I first saw this, but functions can also accept and return 'boolean' as an argument type, as in:
function myfunc(arg: boolean) do
if arg then bla bla bla end
Also, experimentation shows that functions can return more types than they can accept. For example, a function can actually return a record:
function getrecord(key : text) do
first(select Locations where Location = key)
If you really need to pass an array into a function (e.g. into one of the new user-defined global functions), one approach I've used is to pass a string argument with a known convention for delimiting array values, then splitting that argument into its array elements inside the function (using the 'split' function).
function test(argstring : text) do
let args := split(argstring, "|");
Of course, the usefulness of this depends upon whether you can settle on a delimiter that you know will NEVER be contained within an array element.
BTW, a user-defined function can RETURN an array:
function createarray(arraystring : text) do
split(arraystring, ", ")
let array := createarray('Array In')
Yep, I just tested that. It's too bad the concat() function doesen't have a delimiter argument like the split() function.
A delimiter argument for the concat function would make a lot of sense. In the meantime, I've used the replace() function to replace the default ", " delimiter in the concatenated string with the delimiter of my choice. Of course, you still have to make sure ", " does not appear in any of the actual array elements.
This all has been very helpful. Now with global functions we can create these missing pieces
- 4 yrs agoLast active