if文
else if or elsif or elif
else if
elsif
「else if」と発音が同じかつ短い
Rubyの場合、ブロック構造の文法上「else if」は採用不可
Perl, Ruby, Eiffel
elif
Python, Shell
三項演算子
JSでは式で条件分岐をするときの書き方以下のような感じ
三項演算子を使う
hoge = b ? t : f
elseのときも書ける。
更に条件分岐を追加することもできる
ただしtやfの部分に値を返す文などは書けない
hoge = b ? { const p = 42; return 42} : 100みたいなのは無理
&&演算子を使う
elseのときの処理が必要ない場合はこれを使える
b && hogeFunc()
bがfalseの場合は、何も実行されない
構想
そもそもif文いらなくない?という気がしているmrsekut.icon
↓これをパターンマッチというのか?mrsekut.icon
これを使えばifを実装しなくて済みそう
code:maru
l = match isHoge
True => "hogehoge"
False => "None"
しかし、Boolのときに毎度True,Falseと書かないといけないのも面倒だな
これを実現するためにはmatch Tの`Tの部分を型を決める必要がある
二値以上の型を取る場合と、二値以上の値を取る場合とありそう
code:maru
l = match num
1 => "1"
2..9 => "2~9"
_ => "other"
参考になりそうなもの
Haskellのcase..of
Rustのmatch
Elixirの〜〜
Nimのcase..of
でも、jsの三項演算子の様な一行で書ける記法は欲しい
少なくとも値を返す式にしたい
ex. Rust
Haskellのifはcaseを用いて定義されている
code:hs
-- if x then y else z
case x of
True -> y
False -> z
if文の何が気に入らないのか
無駄に冗長な気がする
もう少し深掘りしてmrsekut.icon*3