最近の Ruby の発見 221028

ネスト構造の配列に複数の配列を追加

  • 以下のように書くのは冗長
parent = []

child_1 = [1, 2, 3]
child_2 = [4, 5, 6]
child_3 = [7, 8, 9]

parent << child_1
parent << child_2
parent << child_3

p parent
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • 以下のように書くとスッキリ
    • ただ、なぜこうなるのか理解できない
parent = []

child_1 = [1, 2, 3]
child_2 = [4, 5, 6]
child_3 = [7, 8, 9]

parent += [child_1, child_2, child_3]

p parent
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • 要素を取りまとめるために新規の(親)配列を作るなら、いきなり代入すればよい
child_1 = [1, 2, 3]
child_2 = [4, 5, 6]
child_3 = [7, 8, 9]

parent = [child_1, child_2, child_3]

p parent
# [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

if case の戻り値も変数に代入できる

color = "red"

drink = if color == "yellow"
  "beer"
else
  "wine"
end

p drink
# "wine"
color = "white"

drink = case color
when "white"
  "sake"
when "yellow"
  "beer"
when "red"
  "wine"
end

p drink
# "sake"

その他雑感

  • メソッドなど「最終行に書いた内容が戻り値になる」→「return はいらない」→「return は条件分岐的な使い方ができる」、というのがすごいと思った
  • 条件分岐の結果をダイレクトに変数に入れ込むという発想がなかったので驚いた