NScr Hack
ちょっとだけ言語ハック - senzogawaのNな日々が面白い。
1.一気に値を代入できる。
ポイントは、「ダブルクォートなんかも普通に代入できる」って点でして、straliasの使い道 - 永字八法で一生懸命考えたことが台無し。
2.if文はそのままネストできる。
これも見てのとおり、別に区切りなしでもifネストは可能。
と言うより、以前どっかで書いた覚えがあるんだけれども、NScripterにおいてifは文ではなく(ちょっと特殊な)命令。引数に与えられた評価式を評価して、それが真になれば続きを実行、そうでなければ次の行に実行行を移す命令。
使いどころは特に思いつかない。結果として「&」と同じ事なので。
ちょっとだけある。ifで評価式が成立しなかった場合、その後の命令は構文も含めて全く評価されない。なので、こういうスクリプトが組める。
notif %soeji<0 if ?hairetsu[%soeji]>0 mov %result,1
%soejiが0未満だったとして、その%soejiを配列の添え字として扱うと必ずバグる。なので直前に%soejiが0以上であることを確認してから配列にアクセスすることができる。
なお、&や&&は、内部的にifと同じルーチンで実行されてると思う。多分。ただし、&や&&はその前にifないしnotifがあることを期待しているらしく、行頭にいきなり&(or&&)を持ってきた場合、何も実行しない。恐らく、行に入る度にif用のブーリアン型変数がfalseになり、&&はその変数を参照して、falseであれば「ifでこけたんだな」と判断してそれ以降の実行をやめるのではないか。
3.defsubとaliasで同じ識別名を使える。
文脈依存で、そこには何があるかを期待してるんだろうな。
基本的には意識して使わない方がいいだろう。
賛成。バグの元だ。
4.getparamを切り替えることで別の引数をとるようにできる。
mov3〜mov9 みたいな命令を作った方がいいんじゃね?とか思う。
とは言え、遅延引数受取はPerlで慣れてるからそうそうおかしな仕様でもないと思ってしまう。
5.無名のラベルを呼び出せる。
使い道が思いつかないな。マジで。
6.1行でfor文を書ける。
これは本気でよい仕様。そうかーできたのかー。for〜nextだけで最低3行も使わなくてよかったんだ。便利。
7.コールバックを呼び出せる。
オブジェクト指向的にゲフンゲフン。
8.returnで強引にスタック消費できる。
面白い。何かには使えそうなんだがなあ。
9.次のファイルに行数ジャンプできる。
ファイルをシーンに見立ててファイルの先頭に移動できる技かと思ったが、違った。
これは本気で役に立つ場面が思いつかない。
10.0の長さの配列を使える。
面白いが、役には立たなさそうだなあ。
感想
もっともっと!