Glad you liked jaytea's article smile In this case however, evaluation brackets are not necessary. That's because the order of evaluation of nested identifiers is exactly the same as that of square brackets: the innermost element is evaluated first (if at the same depth, the order is from left to right). So in something like $a($b($c,$d)), the order of evaluation is $c, $d, $b, $a. In the case of $msfile, the inner one is evaluated first and returns the number of selected files; by the time that inner $msfile returns, mirc has already set up the data structure needed by the outer $msfile, so the latter will work correctly.

So why do we ever need evaluation brackets? Because without square brackets, the evaluation of inner identifiers will not change the way mirc separates the arguments of the outer identifier, ie in $a($b,$c), mirc determines that $a has been passed 2 arguments, even if $b or $c return something that contains a comma or a ). However, when brackets are used, things are different: in $a( [ $b ] ) for example, mirc evaluates $b before it has even begun parsing $a.

In short, square brackets inside identifiers are mainly (but not exclusively) used when a dynamic number of arguments is desired.


/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com