HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0126
YOYO#defuncのlocalについて3解決


YOYO

リンク

2007/1/26(Fri) 10:21:08|NO.5142

β6で#deffuncにlocalが実装されましたが動作が変です。
localの命令をモジュール内から呼び出すのにモジュール名をつける必要があります。

#module "hoge" #deffunc local hoge1 mes "hoge1" return #deffunc hoge2@hoge mes "hoge2" return #deffunc hoge3 hoge1 //失敗する hoge1@hoge //これだとOK hoge2 //これはどちらでもOK hoge2@hoge return #global hoge3



この記事に返信する


kz3

リンク

2007/1/26(Fri) 17:19:50|NO.5149

>localの命令をモジュール内から呼び出すのにモジュール名をつける必要があります。
「localの命令」というものはありません。

localの使い方が間違っているのと、それに対してHSPが syntax error を出さないことに問題があると思います。

追記:
>#deffunc local hoge1
において、

>hoge1
これに対しては正常にエラーを出していましたが、

>hoge1@hsp
こちらが通ってしまうことが問題だと思います。
通さずにエラーとするべきではないでしょうか?

追記2:
たびたび失礼します。
hsp31b6.txt にて更新履歴を見てみましたが、local オプションの具体的な使用例がありませんね。

βユーザー間で交わされる local を使ったスクリプトの多くは、ユーザー定義命で初期化済みの変数を定義するのに使ったりしています。

#module #deffunc hoge local n mes "n は最初はいつでも "+ n +" です." n = rnd(100) mes "n に "+ n +" を代入したよ" return #global repeat 10: hoge: loop
ただ、global と対で考えたときに、local 指定の命令は外部からそのままでは呼び出せないため、モジュールファイルを配布する際、モジュール内だけで使用するようなユーザー定義命令に local を指定しておくことで、ユーザーが呼び出せないようにするという用途にも使えそうな...

#module "mod" #define global hoge(%1) piyo@mod = %1: static_hoge@mod piyo@mod #deffunc local static_hoge var s mes s return #global hoge 1 hoge "a" ; n = 1: static_hoge a // 外部から呼び出すことを禁止みたいな
不具合かどうかはちょっと分からないですね...。
## localって何となく使ってきましたが、どこかに使い方載っていましたっけ?



Irisawa

リンク

2007/1/26(Fri) 17:46:33|NO.5154

これに関しては既にHSP Dev-MLに報告済みです。
(モジュール内でモジュール名を指定せずに呼び出せるようにとかモジュール外からは
呼び出せないようにして欲しいなど)
なお、公式的な説明はありませんが独自に調べた人はいるようです。

http://d.hatena.ne.jp/K-s/20061125



YOYO

リンク

2007/1/26(Fri) 21:32:43|NO.5200

>kz3さん
何を言いたいのかよくわかりませんが、とりあえずlocalの使い方は間違ってないはずです。
>Irisawaさん
そうなんですか、是非モジュール名を指定せずに呼び出せるようになってほしいものです。



ONION software Copyright 1997-2023(c) All rights reserved.