ここまで、文字列や数をputsしたら、putsしたものはどこかへ 行ってしまっていました。つまり、言いたいことは、もし何かを2回表示したいときには、 それを2回プログラムに書かなければならなかったということです。
puts '...もう一回言います...' puts '...もう一回言います...'
...もう一回言います... ...もう一回言います...
もし、タイプするのを1回だけにして、それをどこかにしまっておくことができたら 良いと思いませんか? もちろんできます、—そうではなかったら、言い出したりはしませんよ。
文字列をコンピュータのメモリに保存するには、その文字列に名前をつける必要があります。 プログラマはしばしばこの操作のことを代入(assignment) と呼び、その名前を 変数(variable) と呼びます。 (訳註:日本語では変「数」と呼びますが、これは数学におけるvariableを訳した言葉だからです。 variableは「変われるもの」という意味なので、コンピュータでは指し示しているものが、 必ずしも数であるとは限りません。) 変数名は文字と数字の羅列です。 ただし、最初の文字はアルファベットの小文字でなければなりません。 では、先ほどのプログラムを改良してみましょう。文字列に myStringという名前をつけてみます。(ここで、変数の名前は好きなようにつけ ることができるので、strやmyOwnLittleStringでもいいし、あるいは henryTheEighthとしても大丈夫です。(訳註:でもあとで自分が見たり、他人が 見たりすることを考えると、わかりやすい名前が良いと思いますが)。)
myString = '...もう一回言います...'
puts myString
puts myString
...もう一回言います... ...もう一回言います...
myStringに何かを行おうとするたび、プログラムは '...もう一回言います...'に対してその操作を行います。 これは、変数のmyStringは実体である '...もう一回言います...'を「指し示している」のだと考えると わかりやすいと思います。では、もう少し面白い例を。
name = 'Patricia Rosanna Jessica Mildred Oppenheimer' puts '私の名前は ' + name + ' よ。' puts 'うわぁ! ' + name + ' ってほんとに長い名前ですね。'
私の名前は Patricia Rosanna Jessica Mildred Oppenheimer よ。 うわぁ! Patricia Rosanna Jessica Mildred Oppenheimer ってほんとに長い名前ですね。
変数に文字列などの物(オブジェクト)を代入する ことができるのと同じように、 別の物を再代入 することもできます。 (これが変数と呼ばれる理由です。指し示している物を変えることが できるからです。)
composer = 'モーツァルト' puts composer + 'は、彼の時代、"衝撃的" だったらしい。' composer = 'ベートーベン' puts 'でも僕は個人的には' + composer + 'が好きだ。'
モーツァルトは、彼の時代、"衝撃的" だったらしい。 でも僕は個人的にはベートーベンが好きだ。
もちろん、変数は文字列以外にもどんな種類の物(オブジェクト)でも指し示すことができます。
var = 'もひとつ別の' + '文字列' puts var var = 5 * (1+2) puts var
もひとつ別の文字列 15
実際、変数は他の変数以外なら何でも指し示すことができます。 変数を代入するとどうなるか試してみましょう。
var1 = 8 var2 = var1 puts var1 puts var2 puts '' var1 = 'eight' puts var1 puts var2
8 8 eight 8
最初、var2にvar1を代入して指し示す先をvar1に しようとすると、実際には8を指し示すようになります。 (これはちょうど、var1が指していたのと同じです。) そして、var1に'eight'を代入してvar1の 指し示す先を変えたとしても、var2はvar1を 指しているわけではないので、8を指し続けます。
さて、ここまでで、変数、数、そして文字列が使えるようになりました。 次は、数と文字列を 相互に変換する方法を学びましょう。