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文いらなくない?という気がしている

↓これをパターンマッチというのか?

これを使えばifを実装しなくて済みそう
marul = match isHoge
True => "hogehoge"
False => "None"
しかし、Boolのときに毎度True,Falseと書かないといけないのも面倒だな
これを実現するためには match T
の`Tの部分を型を決める必要がある
二値以上の型を取る場合と、二値以上の値を取る場合とありそう
marul = match num
1 => "1"
2..9 => "2~9"
_ => "other"
参考になりそうなもの
Haskellのcase..of
Rustのmatch
Elixirの〜〜
Nimのcase..of
でも、jsの三項演算子の様な一行で書ける記法は欲しい
少なくとも値を返す式にしたい
ex. Rust
Haskellのifはcaseを用いて定義されている
hs-- if x then y else z
case x of
True -> y
False -> z
if文の何が気に入らないのか
無駄に冗長な気がする