Rubyを学習していく中で、難解な「文字列」と「シンボル」について自分の中での整理をまとめている。
mojiretu = "あいうえお"
とやると変数mojiretuにあいうえおが代入される。
これは別に
mojimoji = "あいうえお"
でもよくて、左側の変数名はなんでも構わない。
文字というのは1文字のことで、それが複数文字になったものを「文字列」と呼ぶ。
これは他のプログラミング言語でも同じなので理解できる。
puts mojiretu
とやれば
あいうえお
が表示される。
変数に[]を付けることで、「何番目の文字」を取り出すことができる。
例えば上の例だと、
mojiretu[0]には”あ”
mojiretu[1]には”い”
mojiretu[2]には”う”
mojiretu[3]には”え”
mojiretu[4]には”お”
が入っている。なのでターミナルからirbコマンドで簡易的にRubyを動かしてみると
> puts mojiretu[0] あ > puts mojiretu[1] い > puts mojiretu[2] う > puts mojiretu[3] え > puts mojiretu[4] お
こうなる。
代入もできるので
mojiretu[2]="し" mojiretu[3]="て" mojiretu[4]="る"
としてから
> puts mojiretu あいしてる
となる。
これが文字列の動きになる。じゃぁ一方でシンボルについて自分の理解をまとめると。
:hoge とか :age とか「:」をつけるとこれがシンボルということになる。
シンボルは書き換えができない文字列と思えばよい。
a = :book b = "manga"
とすると、aにはbookというシンボルが入っている。bにはmangaという文字列が入ってる。
b[0] = "s"
とやると、変数bの0番目には、mのところにsが代入できる。
>puts b sanga
と表示される。
けど、
a[0] = "f"
とやると、aにはシンボルが入ってるので、これを書き換えできないためエラーが出る。
> a[0]="f" NoMethodError: undefined method `[]=' for :book:Symbol Did you mean? [] from (irb):72 from /usr/local/rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
とのことから、シンボルは書き換えできない文字列と理解できる。(今のところは‥)