これはどう解釈したらいいのかな
OnCommaTest { _list = ('Hoge','Moge','Boge') "%(CommaTestCore(_list))" } CommaTestCore { _text = '' foreach _argv; _word { _text ,= _word } _text }
YAYA文法で書かれたこのコードは文法上間違っています。
CommaTestCore関数内で、配列ではない文字列変数_textに対して、配列結合演算子「,=」を使用しているからです。
ではこの関数の実行結果はどうなるのか。
,Hoge,Moge,Boge
えーっと、何が起きているんだろう……?
察するに、演算子「,=」が絡んだ時点で、_textは要素「''」を持つ1要素の配列扱いになり、
それに順次_list(=_argv@CommaTestCore)の要素が追加され
%()で展開(TOSTRと同等?)されてカンマ連結された
ということで良いんでしょうか。うん。
なんか記事書いてるうちに頭の中が整理された気がします。
…いや、一瞬「,=」のカンマが演算結果に漏れたのか!? とか思ったものでね!(・∀・)