Jump to content
Sign in to follow this  
Mc128k

Square brackets semantics in functions

Recommended Posts

I often see that FileMaker native functions use square brackets to define lists, like 

let ( [
	~var1 = 1 ;
	~var2 = 2 
    ]
~var1 + ~var2
)

Or JSON functions, that actually seem to be "variadic" in the sense that they take a variable number of arguments:

JSONSetElement ( "{}" ;
  [ "id" ; "FB4" ; JSONString ] ; 
  [ "name" ; "Vanilla Cake" ; JSONString ] ; 
  [ "price" ; 17.5 ; JSONNumber ] ; 
  [ "stock" ; 12 ; JSONNumber ] ; 
  [ "category" ; "Cakes" ; JSONString ] ; 
  [ "special" ; true ; JSONBoolean ] 
) ]

Now, I've been searching for a way to do custom variadic functions, but it seems impossible. And the official documentation doesn't mention the square brackets' real meaning from the language standpoint. What are these "array-like" things exactly? Is there a way to exploit them in custom functions or is it reserved for native functions only?

Thanks

Share this post


Link to post
Share on other sites

There is no way to define a custom function with a variable number of arguments, or with optional arguments. At most, you can call a function with a list of values as the argument, and have the function recurse over the list.

 

Edited by comment

Share this post


Link to post
Share on other sites

Kinda figured it out that already, custom functions do not fully exploit the language. What about the square brackets?

Share this post


Link to post
Share on other sites
1 minute ago, Mc128k said:

What about the square brackets?

What about them?

Share this post


Link to post
Share on other sites
1 minute ago, comment said:

What about them?

Just what are they for exactly, the docs don't say how they work and if they are exploitable in some way by custom functions. 

Edited by Mc128k

Share this post


Link to post
Share on other sites

you can't exploit them for custom functions.  They work for those native functions that can take a variable set of 'instructions'.  Like the Substitute() function that can do substitute a number of combos in one call.

Share this post


Link to post
Share on other sites

That confirms my hypothesis.. Thanks

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.