「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#1959) 条件分岐の「ならば」でも同様のようです - うぇいく (2012-03-12 16:37) /中 未処理
ざっと見てみたところ、「ならば」の方に指定する値でも同じようにエラーとなるようです。
(以下、何も無いことを、nilと表現しています)

特定の型として参照する構文においては、ケアがされているようです。
・「もし」等の真偽値(Bool値)として評価する構文では、nilは、偽として扱う。
・「ループ回数」等の整数値(int)として評価する構文では、nilは、0として扱う。
・「言う」等の文字列として評価する構文では、nilは、「」(長さ0の文字列)として扱う。
ところが、任意の型を受け付ける「条件分岐」とその「ならば」ではnilに対するケアがおこなれていないようです。
修正が行なわれる場合に備えて、どう動作するのが望ましい(ユーザが思っている動作に近い)かの情報が有ると良さそうです。以下、私は考えです。

「条件分岐」がnilの場合
  整数値の0として扱う。結果として、偽や0や「」(長さ0の文字列)とも一致する。

「ならば」がnilの場合
  整数値の0として扱う。結果として、偽や0や「」とも一致する。

(システム的には、「いずれとも一致しない」(「違えば」があれば、それを実行する)のが実装は楽そう)
開発者向け情報。修正は、hima_parser.pasのTSyntaxSwitch.getValue(7356辺り)の
      vKekka := hi_var_calc_Eq(vJouken, vCase);
の手前辺りでケアすると良さそう。
ハッシュ@「キー」で条件分岐しようとし.. / とけい (2012-03-11 19:05) (#1958)/ 中 未処理
  条件分岐の「ならば」でも同様のようです / うぇいく (2012-03-12 16:37) (#1959)/ 中 未処理

(#1959)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能