あれ?解決済みの後に書き込みが!
気付きませんでした。済みません。
>>ANTARES様
>>レノス様
ご回答ありがとうございます
お二方の書き込みから、気になったことが…
(理解力が低いので、お二方の仰ってることの復唱になってたり、
質問しておいて、お二方のご回答にケチつけるようなことになってたり、
的外れな事言ってたりするかも知れませんが、ご容赦下さい。)
>説明と例が矛盾
ので、あまりアテにならないとして
>仕様と実装が食い違っていることをバグと呼びました。
結局
『モジュール名を省略できる仕様に対して、一部省略できない実装』
『モジュール名を省略できない仕様に対して、一部省略できる実装』
どっちなのかが気になります。
>「モジュール内でのみ使用される命令を定義する」というlocalの使用目的の方でしょう。
ここも気になるところです。
バグが後者だとすると、なんでモジュール内でのみ使う命令をモジュール内で呼び出すのに
モジュール名つける必要があるってのが今一???。
同じく「モジュール内でのみ使用される」ものに変数がありますが、こちらは
『通常、同一モジュール内では参照にモジュール名が要らず、
どうしても他モジュールから参照するときは@モジュール名を添えて参照する』
という仕様になっています。(こういうのをスコープって呼ぶんでしたっけ?)
だから、ローカル命令も
『同一モジュール内では呼出にモジュール名が要らず、
どうしても他モジュールから呼ぶときには@モジュール名を添える。』
という仕様なのだろうと、勝手に思い込んでたわけですが、
>その場合にtest2@mod_testがエラーになることの方がバグな気がする
とは
#module mod_test
#deffunc f_test str p_str
mes p_str
return
#global
test@mod_test "test
こういうことですよね?
これはグローバルに属する"f_test"をモジュールmod_testに属する
ものとして呼び出したから、エラーになっているのでは?
って考えると、あながち私の思い込みではなく
『モジュール名を省略できる仕様に対して、一部省略できない実装』
なのではないかと思えてくるのですが?
>ただ、実際に、local が定義より後にあるときだけ省略できないので、
>やはり省略しない方に統一した方がいいのではないでしょうか?
その方法であれば、どっちのバグだったとしても
対応できる最良の手だとは思うんですが、
この仮説が正しければ、
『ローカル命令はモジュールの末尾に書きましょう。』
っていう統一の方法もあるのでは?
バグが修正されたとき、省略できなくなるというのであれば、
モジュール名つけるのもやぶさかではないのですが、
バグ修正後も省略できるなら、記述位置が限定されても
省略していたいという気持ちが強いです。
これは、管理人様から回答もらわないとバグの修正が
どうなるのかわからないんでしょうか?
(ひょっとしてバグ報告て何かしないといけない?)
長文失礼致しました。