Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【Ruby】if文をもっと簡単に記述する

こんにちは😊Kintarouです。

現在エンジニア転職を目指してTECH CAMPにてプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人が働きやすいシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


if文おさらい

まずif文の基本からおさらいします。

真偽値

if文はその条件式が真と評価された場合のみ処理を実行し、偽と評価された場合はelseの後の処理を実行します。

真偽とは?

# 偽 ー false または nil  
  false  
  nil  

# 真 ー それ以外の全て(以下は全てtrue)  
  # 例1) true 自体  
    true  
  # 例2) すべての数値  
    1  
    0  
    -1  
  # 例3) すべての文字列  
    'true'  
    'false'  
    ''  

今回はあくまでRubyの場合で他の言語の場合nilは偽として扱わない場合があるのでご注意ください。

if文

前述のように真(true)の場合実行され、偽(false)の場合はelseの後の記述を実行します(elseが無い場合何も実行されません)。endでif文を終了します。

num = 1  
if num == 1  
  puts 'numは1です'  
else  
  puts 'numは1ではありません'
end  

#=> 'numは1です'

if文を簡単に記述するあれこれ

一部を紹介します。

unless

真ではなく、偽の場合だけ実行して欲しいなどに使います。elseは使えますが、elsifは使えません。elseも、記述として「偽ではない(=真)場合」とコードが把握しづらくなるので、その場合if文を使った方が良さそうです。

num = 2
unless num == 1
  puts 'numは1ではありません'
end

#=> 'numは1ではありません'

後置if

elseなどがなく、trueかfalseの場合に実行して欲しい句を記述する際に使えます。

num = 1
puts 'numは1です' if num == 1

#=>numは1です

num = 2
puts 'numは1ではありません' unless num == 1

#=>numは1ではありません

# 偽の記述をする時に if num == 1 false とは出来ません
num = 2
puts 'numは1ではありません' if num == 1 false

#=>syntax error

三項演算子

true/false の処理を1行で記述することができます。

# 通常のif文
num = 1
if num == 1
  puts 'numは1です'
else
  puts 'numは1ではありません'
end

#=> 'numは1です'

# 三項演算子で記述した場合
num = 1
puts num == 1 ? "numは1です" : "numは1ではありません"

#=> numは1です

構文としては

(条件式) ? (真の場合の句) : (偽の場合の句)

で表します。
注意点は「?」と「:」の前後に半角スペースを入れることです。(シンボルなど、一まとまりの句と読み取られてしまうため)

※ボリュームより可読性を考慮して下記のように記述するのもありです!

(条件式) ?
    (真の場合の句)
  : (偽の場合の句)

# 例文の場合
num = 1
puts num == 1 ?
    "numは1です"
  : "numは1ではありません"

#=> numは1です

以上!どなたかの参考になれば幸いです!