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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1027
玄冬マクロの引数での{の扱い4解決


玄冬

リンク

2011/10/27(Thu) 05:49:50|NO.42666

下記のようなスクリプトを書いたところ、4行目でエラーが出ます。
#define unless(%1) if %1 = 0
i = 0 unless i = 1 : mes "i != 1" unless i = 1 {;{も引数として認識される mes "i != 1" mes i }
これは仕様でしょうか。バグでしょうか。 また、現行のヴァージョンでの解決策は何かありますか?

ご回答よろしくお願いいたします。



この記事に返信する


てれてれ

リンク

2011/10/27(Thu) 06:51:39|NO.42667

このような使い方はあまり見たことが無いため、
私にはバグなのか仕様なのか判別出来かねますが、

どうしてもこのような形で使用したいのであれば、

#define unless(%1) if %1 = 0 i = 0 unless i:{ mes "i != 1" }
このように記述することでとりあえず正常に動作致しました。



レノス

リンク

2011/10/27(Thu) 17:56:00|NO.42670

ctype を付けるという手もあります。

#define ctype unless(%1) if ((%1) = 0) // ctype 付きで定義 i = 0 unless ( i = 1 ) : mes "i != 1" unless ( i = 1 ) { // 引数を括弧で括る mes "i != 1" mes i }

仕様かはわかりませんが、確かに変な動作ですね。
{ が続けば、: と同じく、引数が終了するとわかるはず。



pizza

リンク

2011/10/27(Thu) 18:27:01|NO.42671

↓のため?


a = "hello\nworld" if a == {"hello world"} { mes "同じ" }else{ mes "違う" } mes {"hello world"}



玄冬

リンク

2011/10/28(Fri) 03:38:01|NO.42685

てれてれさま、レノスさま
改善策の提示ありがとうございます。

:{}という記述ができることははじめて知りました。
ctypeは試してエラーが出るのを確認してから投稿したつもりだったのですが、それは私のタイポでした。
ctypeが使えることが確認できたのでよかったです。

pizzaさま
なるほど!{の前で引数が終わるとは限らないんですね。
複数行の文字列を記述するのにも{}が使えることを言われて思い出しました。

納得することができました。
皆様ご回答ありがとうございます。



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