0Pricing
Ruby Academy · レッスン

シンボルと文字列

シンボルを使う場面を学びます。

「シンボルと文字列」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。

シンボルとは

Symbolは、先頭にコロンを付けて:nameのように書く、軽量で不変な名前です。シンボルは識別子やハッシュのキーとしてよく使われます。

status = :active
puts status
puts status.class

シンボルは不変

文字列とは異なり、シンボルは変更できません。いったん:helloが存在すると、ずっと同じままです。

puts :hello.frozen?
puts "hello".frozen?

同じシンボルは同じオブジェクト

同じシンボルを使うたびに、メモリ上の1つの共有オブジェクトを参照します。同じ内容の文字列は通常、それぞれ別のオブジェクトです。

puts :ruby.object_id == :ruby.object_id
puts "ruby".object_id == "ruby".object_id

シンボルがメモリを節約する理由

同一のシンボルは1つのオブジェクトを共有するため、繰り返し使うキーにシンボルを使うとメモリ効率がよくなります。文字列では使うたびに新しいオブジェクトが作成されます。

ids = [:a, :a, :a]
puts ids.map(&:object_id).uniq.length

シンボルと文字列を変換する

to_symで文字列からシンボルを作り、to_sで反対方向に変換します。

word = "color"
sym = word.to_sym
puts sym
puts sym.to_s.upcase

ハッシュのキーとしてのシンボル

シンボルは高速で変更されないため、Rubyではハッシュのキーとして最もよく使われます。

person = { name: "Ada", age: 36 }
puts person[:name]
puts person[:age]

短縮構文

キーがシンボルの場合、name: "Ada"は:name => "Ada"の短縮形です。どちらもシンボルをキーとして作成します。

a = { color: "red" }
b = { :color => "red" }
puts a == b

メソッド呼び出しでシンボルを使う

シンボルは、sendやmap(&:method)のようなツールでメソッド名を表します。&:upcaseという形式は、シンボルをブロックに変換します。

words = ["a", "b", "c"]
puts words.map(&:upcase).inspect

文字列を使う場合

表示、組み立て、変更を行う値には文字列を使います。たとえば、名前、メッセージ、ファイルの内容などです。文字列には豊富なテキスト操作メソッドがあります。

greeting = "Hello"
greeting << ", world"
puts greeting

シンボルを使う場合

固定された識別子にはシンボルを使います。たとえば、ハッシュのキー、状態、オプション名などです。シンボルを使うと意図が伝わり、誤って変更されることもありません。

def move(direction)
  puts "Moving #{direction}"
end
move(:north)

シンボルと文字列を比較する

同じ文字で構成されたシンボルと文字列でも、等しくはありません。異なる型だからです。

puts :name == "name"
puts :name.to_s == "name"

理解度チェック

シンボルについて理解したことを確認します。

まとめ

これで、シンボルと文字列の違いが分かりました。

  • シンボルは不変で共有され、キーや識別子に適しています
  • 文字列は変更可能で、豊富なテキストデータを扱えます
  • to_symとto_sで変換します
  • :a == "a"はfalseです

次は、ハッシュを作成して読み取ります。

config = { mode: :fast }
puts config[:mode]

よくある質問

「シンボルと文字列」レッスンは無料ですか?

はい。「シンボルと文字列」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。

「シンボルと文字列」で何を学びますか?

シンボルを使う場面を学びます。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ruby Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「シンボルと文字列」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このRuby Academyレッスンでコードを書いて実行できますか?

はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. シンボルと文字列
  2. ハッシュの作成と読み取り
  3. ハッシュの反復処理
  4. デフォルト値とマージ
← Ruby Academyに戻る