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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0714
撲殺ガキ大将入力規則 if分は改行しないといけないのか1未解決


撲殺ガキ大将

リンク

2021/7/14(Wed) 02:43:25|NO.93220

こんにちは。こんばんは
スクリプトをなるべく美しく書きたいな〜と思う今日この頃なのですが、
if分を使う場合に無駄に改行しないといけないのかと困っております。


if a=0 {} else { if a=1 }

上記の様に改行がはいるとコードが醜くなるので
下記の様に修正したいのですが、エラーとなります。


if a=0 {} else {if a=0} // error 16 : if命令以外で{〜}が使われています

しかしながら、


if a=0 {} else {}

上記のコードであればエラーが出ないので
if分に"{}"を付加した場合、内部的にどういった判定が行われているのか
知る必要があると思いました。

1行目のif文で偽を吐き出し、
2行目のelseで偽となっているので"{"の次のif文が実行対象となるのではないのでしょうか。

お詳しい方、お教えいただけると大変有り難いです。
よろしくお願いいたします。



この記事に返信する


usagi

リンク

2021/7/14(Wed) 05:59:20|NO.93221

改行しなくても良いと思います。
2行目のif分の{}が足りないのでエラーになってますね。
if a=0} という書き方は出来ないので
if a=0{} と書く必要があります。
それを "else" で囲む訳ですから

if a=0 {} else {if a=1{}}
となります。
※このように書けば、else前の改行消して1行でも書けます。

美しく書きたいとのことなので、おそらくelseif っぽい書き方をしたのであれば以下とかどうでしょうか?
カッコの数が減って見やすそうな気がします。

// その1 if a=0 { mes "0" } else : if a=1{ mes "1" } //その2 よく使うならマクロ定義しておく #define elseif else : if if a=0 { mes "0" } elseif a=1 { mes "1" }

本題とは違いますが、このような場合だったらswitch使ったほうが美しいかもですね。


switch a case 0 : mes "a=0" : swbreak case 1 : mes "a=1" : swbreak case 2 : mes "a=2" : swbreak swend



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