📘

【Ruby 4.0 Advent Calender】`||` や `&&` が行頭でもかけるようになる【2日目】

に公開

Ruby 4.0 Advent Calender 2日目の記事です。

これはなに

今年 2025年12月25日にリリースされる予定の Ruby 4.0 の新機能や変更点などを1つずつ紹介していく Advent Calender になります。
基本的には NEWS に載っている機能を紹介すると思うんですがここにない機能についても書くかもしれません。
また、記事を書いてる時点ではまだ Ruby 4.0 はリリースされる前なので Ruby 4.0 がリリースされた時点で機能が変わっている 可能性があるかもしれないので注意してください。
記事のまとめは ここを参照 してください。

||&& が行頭でもかけるようになる

Ruby 3.4 では次のように行頭に ||&& を書くと SyntaxError になります。

if request.secret_key_base.present?
  && request.encrypted_signed_cookie_salt.present?

end

なので複数行に渡って &&|| を用いた条件を記述する場合は &&|| を末尾に持ってくる

# 行頭ではなくて末尾に && を記述する
if request.secret_key_base.present? &&
   request.encrypted_signed_cookie_salt.present?

end

もしくは末尾に \ を追加して『1行の文であること』を明示する必要がありました。

# 末尾に \ を記述することで次の行とつながっていることを明示化する
if request.secret_key_base.present? \
  && request.encrypted_signed_cookie_salt.present?

end

Ruby 4.0 ではこの構文が許容されるようになり行頭でも &&|| がかけるようになりました。

if request.secret_key_base.present?
  && request.encrypted_signed_cookie_salt.present?
  && request.encrypted_cookie_salt.present?
  && request.encrypted_cookie
end
# Ruby 3.4 => error: syntax errors found (SyntaxError)
# Ruby 4.0 => no error

他の言語ではこの書き方を多用している + 複雑な条件の場合は行頭に演算子がある方がわかりやすいので個人的には Ruby 4.0 で一番期待している対応になります。

関連

GitHubで編集を提案

Discussion