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

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@807) [高] [調査中]
@807■ (#2526) 関数の引数にグループを指定した場合 - UNOパパ (2016-01-26 16:21) /高 未処理
【症状】
関数の引数にグループを指定して、関数内で「グループ判定」をした場合、
引数に指定したグループのSetter Getter用の値がデフォルトになっていると
グループ判定しても空が返される。

【再現方法】サンプルソース、再現手順など

------ここから------
■テストグループ
 ・値 {=0}
 ・X ←X設定 →X取得 デフォルト
 ・X設定(x)~
     値 = x
 ・X取得~
    それ = 値


●テスト実施(aで)
  aのグループ判定して表示

testとはテストグループ
testでテスト実施


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

【要望】どのような解決が望ましいか?
デフォルト指定があってもちゃんとグループ名(上記の場合test)
が返されて欲しい

【バージョン】1.555

(#2527) Re - 謎のX (2016-01-26 20:04) /高 未処理
横から失礼します。
引数をグループとして渡す場合、仮引数宣言に「{グループ}」が必要ではないでしょうか。

●テスト実施({グループ}aで)
  aのグループ判定して表示

のように関数を書くと、所望の挙動をします。

(#2528) デフォルト指定があるときだけ - UNOパパ (2016-02-01 14:54) /高 未処理
情報有難うございます。ただ、上記のソースコードで「デフォルト」
部分を削除すれば、ちゃんとグループ判定してくれるんです。
なので引数に{グループ}指定がなくても、ちゃんとグループは
渡せるんですが、「デフォルト」があるときだけグループ判定
出来てません。

関数ではなく普通にグループ判定すれば「デフォルト」指定が
あっても大丈夫なんですけどねえ

(#2530) Re: デフォルト指定があるときだけ - うぇいく (2016-02-01 17:35) /高 未処理
調べてみると、内部での実装にて、関数の引数を扱う部分で引数がグループの場合にうまくいっていないようです。
(ユーザ関数、システム関数(なでしこ自体の命令)の両方)

引数の型がグループだったら・・・という判定があるのですが、実は引数はリンク(参照)としてわたってきており、グループを指定した場合も、グループへのリンクとなっており、判定がうまく機能していないようでした。

折を見て修正します。

おそらく、こうなったタイミングと同じだと思うのですが、実質、変数型確認が"リンク"しか返しません。理由は上記にあるとおりで、変数型確認の命令を呼び出すための引数は、必ずリンク(参照渡し)となるためです。
こちらは、上記とあわせて直すか、もしくは原因となる修正から調査する必要がありそうでした。

(#2531) Re: デフォルト指定があるときだけ - UNOパパ (2016-02-05 13:44) /高 調査中
うぇいくさん、調べて頂き有難うございます。ちょっとバタバタしてて
お返事遅れました。

グループは基本グローバル管理で生成されるので、関数の引数にした場合は
リンク扱いなのは納得ですが、謎のXさんに教えて頂いたみたいに、一々
引数として型指定するのはちょっと違うかなあと感じてます。

あと「グループ判定」ってグループ名が返ってくるとあるのですが、
実際に返ってくるのは変数名(上のサンプルでは「test」)なのも
同じ現象なんでしょうか。

修正頂けるのをお待ちしております。

(#2526)へ返信する:

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

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

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