再代入を回避させ、1回の記述で代入をさせるための記述を整理として
環境
検証したバージョン
$ ruby -v ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [arm64-darwin22]
リファレンスマニュアルより
if 式は、条件が成立した節(あるいは else 節)の最後に評価した式の結果を返します。else 節がなくいずれの条件も成り立たなければ nil を返します。 - 制御構造 (Ruby 3.3 リファレンスマニュアル)
と記載されているので以下のように記述ができる。
gender = if is_male then "male" else "female" end pp gender # "male"
また、ドキュメントの記載どおり、いずれにも合致しないとnilになる。
is_male = false is_famale = false gender = if is_male == "male" then "male" elsif is_famale then "female" end pp gender # nil
改行も可能
下記のような記述も可能。下記の場合は then
を省略して記述している。
is_on = true message = if is_on "スイッチオンです" else "スイッチオフです" end pp message # "スイッチオンです"