Got this question in one of emails…
One of forms to declare anonymous function in TIScript is so called single statement lambda function:
':' [param-list] ':' <statement>;
Let’s say we have this JavaScript code:
var counter = 0; var inc = function() { counter++; }
So each time when you call inc()
the counter will be incremented.
By using TIScript’s lightweight syntax we can do exactly the same by declaring:
var counter = 0; var inc = :: counter++;
So first “:
” here is exactly “function(
” and second “:
” is “)
” in JS declaration.
You of course can use standard JS way of declaring functions in TIScript too, I just think that sometimes shorter forms are better. Like here:
var accounts = [...]; // list of accounts accounts.sort( :a,b: a.balance - b.balance );
Instead of quite noisy:
accounts.sort( function(a,b){ return a.balance - b.balance });
Ruby has similar lightweight approach of declaring similar entity:
[1,2,3,4,5].each {|i| print "#{i} "}
That in JS will be
[1,2,3,4,5].each(function(i){ println("#",i);});