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 -> ?
and more?
10 replies
-
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
case 0:
myArray := [indexItem, item(myArray, 1), item(myArray, 2), item(myArray, 3)]
case 1:
myArray := [item(myArray, 0), indexItem, item(myArray, 2), item(myArray, 3)]
case 2:
myArray := [item(myArray, 0), item(myArray, 1), indexItem, item(myArray, 3)]
case 3:
myArray := [item(myArray, 0), item(myArray, 1), item(myArray, 2), indexItem]
end
end;
replaceArrayItem("Swift", 3)The screenshot cuts off some of the code...
-
Ooops, to get the output...
replaceArrayItem("Swift", 3);
myArray
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
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)
end;
popupRecord(getrecord("keyvalue"))
-
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, "|");
cnt(args)
end;
test("abc|def|123")
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, ", ")
end;
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
Content aside
- 5 yrs agoLast active
- 10Replies
- 5990Views