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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0315
Riv1つの「if文」の記述を1行で済ませる方法について5解決


Riv

リンク

2021/3/15(Mon) 06:14:42|NO.92479

本題は、『1つの「if文」の記述を1行で済ませる方法は他にないのか』ということです。
(一応、『「if文」の記述』に直接関わるなら話題がそれてもいいことにします。)
(例:「repeat」と「if文」の組み合わせ方について)


このスレッドでは、「質より量」の方針にします。
「否定」を極力避けて、「質問」や「前向きな意見」を心がけるようお願いします。
「前向きな意見」…(例:「それはxxxxのかわりにyyyyを使ってもよさそうです。」)

最終的に、『「if文」を1行で済ますか』、
『「if文」をどのように記述するか』はそれぞれの自由です。
あくまで提案と、それに対する質疑や検証という程度でお願いします。



私は最近こちらを使っています。

if ( cnt == 0 ) { : mes "Hello" : }
()の中身や「mes ""」は本題とは関係ないです。

if ( cnt == 0 ) : mes "Hello"
このように記述する方法も知っているのですが、{}がないために、
何処までがif文なのか分からなくなるので、最近はあまり使っていないです。



この記事に返信する


(´・ω・`)

リンク

2021/3/15(Mon) 07:32:59|NO.92480

if a=1:if b=1{mes a}

↑みたいに記述すると正しく機能しなくなるよね。 何でか分からないんだけど、これがダメだと気が付くのにめちゃ時間掛りましたわ。(話題と関係ないかな)



Riv

リンク

2021/3/15(Mon) 08:45:54|NO.92481

本題ではないですが、関係ありますよ!

if a=1:if b=1{mes a}
ではなく、
 
if ( a==1 ) { : if ( b==1 ) { : mes a : } : }
もしくは

if ( (a==1)&(b==1) ) { : mes a : }
となるはずですね。(あくまで私の場合ですが)

それと、「mes」は文字列を出力するので、
そもそも文字列として出てきますが、

mes str(a)
という感じに毎回文字列に変換してます。
「a」が実数で、エラーになってたら困りますし、
「if文」の条件を記述する際も大事になります。



Riv

リンク

2021/3/15(Mon) 08:52:52|NO.92482

これを「if文」の条件に当てはめると、
    if (str(a) == "1") { : mes " a = 1 " : }
みたいになります。

因みに、「a=1」か「b=1」のどちらかを満たしている場合の記述は、
    if ( (a == 1)||(b == 1) ) { : mes "Hello" : }
となります。外側の()はいらないかもしれないですね。



kou

リンク

2021/3/19(Fri) 17:19:18|NO.92496

私も{}があった方が後で分かりやすいので良く記入してます。

複数条件がある場合は、if文を長くしたくない癖があるのでマクロを使うことが多いです。
関数でも良いとは思うのですが、インライン展開されないのでそうしてます。

明日になると何書いたか忘れて「なに判定してたんだっけ?」となるので
なるべく、if文の数式を読まなくても良い事を意識してます。
(話題にそってますでしょうか?)

例1)

#define ctype toRGB(%1,%2,%3) (((%1&255)<<16)|((%2&255)<<8)|(%3&255)) if toRGB(r, g, b) == rgb { mes "赤" }

例2)

#define ctype onMouse(%1,%2,%3,%4) (mousex>%1 & mousey>%2 & mousex < %3 & mousey<%4 ) if onMouse(100,100,200,200) { mes "マウスのってる" }



Riv

リンク

2021/3/19(Fri) 19:48:20|NO.92500

>kouさん
しっかり本題にそってるはずです。「if文」を1行で済ますいい方法だと思います。
マクロですか、考えたことがなかったです。

先にマクロにした場合、
同じ条件を書くことになった時の「if文」のコピーがスムーズに済むはずなので
私の案よりも使いやすそうです。

私の案なら、条件の記述が長いと
分岐先の処理の記述までが長くなり
作業中そこそこ面倒になってしまうので、
複雑な条件記述の時にやってみようと思います。



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