にゃごすwiki

スクリプト関連/2009-6-14

 スロット名に2バイト文字

いきなりだが、辞書を作ってみる。なにも考えないでこんな風になった。

dic <- [
  { kana="あい",kanji=["愛","藍","相" ] }
    :
    :
]

これだと、forかforeachで検索しないといけない。

foreach( i in dic ){
  if( i.kana=="あい" ){
    print( i.kanji[0] );
  }
}

スロット名に日本語がつかえらいちいち検索する必要無くていいなぁと思って

dic <- {
  "あい" = ["愛","藍","相" ]    ←エラー
  あい = ["愛","藍","相" ]      ←エラー
}

とか書いてみたけどダメでした。2バイト文字が変数として認識されないとダメってことかな。unicodeでリコンパイルしたらいけるのだろうか?
たしかどこかでダメだって読んだ気がするのでそのうち試すとして、squirrelのマニュアルには書いてないっぽいけど、luaと同様にテーブル(スロット)のシンタックスシュガーが用意されている。ちなみに日本語だと糖衣構文っていうらしい(wikipedia)。
こんな風に書くことが出来る。

dic <- {}
dic["あい"] <- ["愛","藍","相" ];
dic["あう"] <- ["合う","会う" ];

print( dic["あい"][0] );
print( dic["あう"][1] );

これだと、初期処理で設定する必要があるので、いまいちといえばいまいち。辞書であれば別ファイルから読み込むのが普通だから問題ないけど、初期値として指定する方法は無いものかなぁ。