ごまなつ Blog

楽しく働ける世界を目指して

【なでしこ】グループに関する不思議な挙動

最近業務で日本語プログラミング言語のなでしこを触っています。業務自動化を始めた方がなでしこで行ったことにより、なでしこが伝わっているようです。よって、v3ではなくv1です。(なでしこv3がWeb環境で動作、なでしこv1がWindows向け)

なでしこは配列にあたるものがグループです。グループは、イメージ的には表です。

グループ1¥0=0
グループ1¥1=1
グループ1¥2=2

といった定義だと配列ですが、

グループ1¥0,0=0
グループ1¥1,1=1
グループ1¥2,2=2

というように2次元配列のようにもできます。このグループですが、なでしこは変数定義しなくても使えますし、型を宣言する必要がありません。

グループ1¥0,0=0

と書いた瞬間にグループ1というグループが作成されます。

問題

私は、ループを使ってケーブルがあるときとない時の値の差を計算しようとしました。

iで0から7まで繰り返す//for(i=0;i<7;i++)と同じ。かっこはなくインデントで範囲を表現
   ケーブルあり値¥i=ケーブルあり値取得()
   ケーブルなし値¥i=ケーブルなし値取得()
  「{ケーブルあり値¥i}-{ケーブルなし値¥i}」を言う//メッセージボックスで指定文字列を言う

とすると、すべて0が出てきます。調べてみると、ケーブルあり値とケーブルなし値は全く同じ値になっていました。グループを定義して、何も代入していないとグループ名が文字列として要素になります。そこで確認すると、どちらも「ケーブル値」になっていました。どうりで差分が0なわけですね。似ていないグループ名に変更しました。

まだ言語仕様を理解しきれていないのが問題なのかもしれないですが、ちょっと不思議な挙動に遭遇した記録でした。