Techioz Blog

「if」ステートメントの最後に「then」がある場合の違いは何ですか?

概要

if ステートメントの最後に then を置く場合、これら 2 つの Ruby if ステートメントの違いは何でしょうか?

if(val == "hi") then
  something.meth("hello")
else
  something.meth("right")
end

そして

if(val == "hi")
  something.meth("hello")
else
  something.meth("right")
end

解決策

then は、Ruby が条件と式の真の部分を識別するのに役立つ区切り文字です。

if 条件 then true 部分 else false 部分 end

if 式を 1 行で記述したい場合を除き、 then はオプションです。複数行にまたがる if-else-end の場合、改行は条件文を true 部分から分割するための区切り文字として機能します。

# can't use newline as delimiter, need keywords
puts if (val == 1) then '1' else 'Not 1' end

# can use newline as delimiter
puts if (val == 1)
  '1'
else
  'Not 1'
end