本文へスキップ
BecomeCoder

Rubyコース · 第9章 実務のRuby ― 記法を深める · レッスン37

シンボルと多重代入 ― 軽い名札とまとめて代入

ブラウザで完結

導入

: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 としたあと、多重代入で ab の値を入れ替え、aputs で表示してください(20 になります)。

ヒント1を見る

a, b = b, a で入れ替えられます。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。