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

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@553) [高] [未処理]
@553■ (#1778) 「抜ける」の動作が予約される - とけい (2010-09-28 03:25) /中 未処理
【症状】「抜ける」の動作が予約される(ような動作に見える?)
【再現方法】下記記載
【バージョン】1.5329
【その他】優先度の基準がよくわからないので中にしてみます。

//-------ここから
A=1
Bは~
 もしA==1ならば
  それ=「1番」
  抜ける  //イベントから抜けたい(発動しない)
 それ=「2番」

C=B
Cを言う  //「2番」を言う
2回
 回数を表示 //表示されない(予約された「抜ける」が発動?)
3回
 回数を表示

//-------ここまで

上記のソースに期待する動作は
 「Cを言う」で「1番」のダイアログが出る
 回数ループ2個分で「1,2,1,2,3」が表示される
なのですが、

実際の動作は
 「Cを言う」で「2番」のダイアログが出る
 回数ループの1つめがカットされ「1,2,3」が表示される
となります。(なでしこver = 1.5329)

ちなみに「抜ける」のかわりに「戻る」では「待機」したみたいになります。

追伸:
 グループのメンバのイベント(・メンバ名()~ )だと「戻る」ができるようですが
 (変数名)は~ のイベントから抜ける方法がないみたいなので
 「抜ける」か「戻る」で戻れるとありがたいです。

(#1787) コーディング規約に追加 - U D (2010-09-29 01:36) /高 未処理
これは内部のフラグ管理か何かが完全にミスってるみたいようですね。

イベントの部分に色々と書くと不具合を誘発しやすいので、
基本的に関数を別途定義してそちらに投げるべき、ですね。
確か他にもこんな例(イベントで書くと不具合)があった気がします。

ということで、ひとまずコーディング規約に追加しておきました:
[イベント構文の中で複雑なコードを書かない。 - コーディング規約]
 http://nadesi.com/wiki/index.php?U%20D%2F%CA%B8%CB%A1%A1%A6%BB%C5%CD%CD%2F%A5%B3%A1%BC%A5%C7%A5%A3%A5%F3%A5%B0%B5%AC%CC%F3#oc66e389

結構ミスリーディングなので優先度は高で問題ないと思います。

----

ちなみに、今回の再現例だと、更に以下のように最小化できますね:

抜ける
2回
 回数を表示 //表示されない(予約された「抜ける」が発動?)
3回
 回数を表示

ただ、上のコーディング規約のページに書いたような、イベント構文内で
ごちゃごちゃとするコードを書くと、やっぱり上手く行かないので、
イベント構文固有のバグがあるのは間違いないですね。

イベントテストは
 3回
  回数を表示。
  抜ける。
  -回数*2を表示。
イベントテストする。

(#1778)へ返信する:

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

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

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