導入
:name のようにコロンで始まる値をシンボルと呼びます。文字列に似ていますが「軽くて同じものは1つ」という性質があり、ハッシュのキーやオプション名としてRubyのあちこちで使われます。あわせて、複数の変数へまとめて代入する書き方も学びます。
説明
シンボルは「名札」です。同じ内容の文字列は作るたびに別物ですが、同じシンボルは常に同一。ハッシュのキーやステータス値にぴったりです。
status = :active
puts "状態は#{status}" # 状態はactive(文字列に埋め込むと名前だけ出る)
p status # :active(p ならコロン付きで確認できる)
puts status == :active # true
user = { name: "太郎", role: :admin }
puts user[:name] # 太郎
puts user[:role] # admin
name: "太郎" は :name => "太郎" の短縮形で、キーが自動的にシンボルになります。ハッシュのキーは文字列よりシンボルを使うのが Ruby の慣習です。
多重代入は、複数の変数に一度に値を入れられます。2つの変数の値を入れ替える(スワップ)のも一行で書けます。
a, b, c = 1, 2, 3
puts a + b + c # 6
x, y = 5, 10
x, y = y, x # 値を入れ替え(一時変数が要らない)
puts x # 10
puts y # 5
*(スプラット)を付けた変数は、余った要素をまとめて配列で受け取ります。
first, *rest = [10, 20, 30, 40]
puts first # 10
p rest # [20, 30, 40]
やってみよう
シンボルをハッシュのキーに使ってみたり、多重代入で3つの変数を入れ替えたり、*rest で受け取る位置を変えて動きを確かめましょう。
演習
a, b = 10, 20 としたあと、多重代入で a と b の値を入れ替え、a を puts で表示してください(20 になります)。
ヒント1を見る
a, b = b, a で入れ替えられます。