シンボルと文字列
シンボルを使う場面を学びます。
「シンボルと文字列」は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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- シンボルと文字列
- ハッシュの作成と読み取り
- ハッシュの反復処理
- デフォルト値とマージ