初めまして!プログラミング初学者のsawataです。
バックエンドエンジニアを目指して日々学習をしています。
日々学習を進める中で気になったことを調べては発信して行こうと思います!
いきなりクイズ
#1
if a =! b
end
#2
if not a == b
end
#3
unless a == b
end
上記のような条件分岐を使う場面。
この3つの選択肢の内、2つの条件式は同じ意味ですが、一つは仲間外れです。
さて、それは何番でしょうか?
(※正解は下にあります...)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
正解は...
#1
if a =! b
end
でした!
解説
わかりやすくするために文章で書いてみます。
#1
if a =! b
if "a is not b" is true
#2
if not a == b
if "a is b" is not true
#3
unless a == b
if "a is b" is false
こうしてみると#2と#3の選択肢が同じことがわかりやすいですよね。
逆に、#1は二つの条件式の真反対を意味しています。
疑問の種
今日コードを書いている中で、この#1の条件式と#3の条件式が直感的に同じように感じました。
しかし実際、それぞれ記述してみたら、思うような動作が得られなかったので今回の記事を作ってみました。
ただここでもう一つ疑問が生まれました。。。
"if not" と "unless"は全く同じモノなのか?
"if not"と"unless"にもどこかニュアンスを感じたので、それについて調べていたら以下のディスカッションを発見。
英語のネイティブスピーカーの方々が、この二つの表現にどのような違いを感じているのか。について話されているでした!
内容のまとめとしては、
-
条件式の中身がfalseになると予測する場合は"unless"を、trueになると予測する場合は"if not"を使用する。
-
"if not"を使う方が例外として条件式を立てているようで、自然に感じる。
というような意見がありました!
まとめ
結論、"if not"と"unless"はプログラム上では同じ役割を持っています。
ただこの二つの表現をうまく使い分けることで、自分以外の人(特にイングリッシュネイティブの方)からみたコードの可読性を高めることが出来るのではないのでしょうか...?
英文法にも詳しくなれるプログラミングってすごい。。。今日の学びです。