このページの概要
変数の基本puts で画面へ文章を出す、gets でキーボードからの入力を読み取る。これを組み合わせると、下記のような「やまびこスクリプト」ができます。なにか入力して Enter キーを押すことで、入力した内容をそのまま返すというものです。
このプログラムを応用して、足し算するスクリプトを作ろうと思います。 2行数字を入力したら、合計を表示するスクリプトです。 数字の入力は gets.to_i で行えます。gets はキー入力、.to_i は入力内容を数字と見なす飾り、くらいに今は考えてください。変数を使わないものと使うもの、どちらがわかりやすいですか?
前者はgets.to_iが何を意味するのか、ぱっと見で理解できません。今はサンプルだから理解できるかもしれませんが、このようなコーディングを実用的なスクリプト作りで使おうとしたら、規模が大きくなるにつれて苦労も雪だるま式に増えていくことでしょう。 後者は gets.to_i が x と y という「値のいれもの」に格納されることがわかります。#=> というコメントが理解を助けます。x + y はふつうの足し算ですね、x に 1、y に 2 が入っていたら 1 + 2、つまり 3 になります。answer = x + y は answer = 3 となり、answer に 3 が入ります。そして、puts answer は answer に 3 が入っているので、puts 3 と同じになります。画面には 3 が表示されているはずです。 answer = x + y の部分については、+ を - * / といった四則演算の記号に変えることも可能ですし、 x = x + y という「yはゼロになるの?」と間違えてしまいそうな数式もできます(Ruby では x に x+y の和をいれなさいよ、という解釈になります。これは C言語などの他のプログラミング言語でも同じはずです) 変数には「型」はあるけど明記不要ほかのスクリプトやプログラミング言語を学んでいると、「型はないのか」と疑問に思うかもしれません。C言語なら int x と定義しなければ文法エラー (x は数字なのか文字なのかわからないよ) となってしまいますが、Ruby の場合は = の右側を見て自動的に「値のいれもの」の型を判断してくれますので、明記する必要がないのです。先ほどのスクリプトでは、.to_i があることで、入力内容は数値であると明示したようなかたちになっていました。試しに、足し算スクリプトで .to_i を無くして、1行目に1、2行目に2を入れて計算させてみましょう。
3 ではなく 1[改行]2 と表示されたかと思います。これは、gets だけだと「入力されたものは文字列である」と判断されてしまうからです。answer = x + y は answer = "1\n" + "2\n" (\n は改行を意味していますね) と解釈され、puts answer は puts "1\n2\n" となってしまった、というわけです。 「値のいれもの」が数字なのか文字列なのかを調べるには、変数の後ろに .class を付けます。
もっとも、.class でわかるのは「今の型」であり、違う型を入れることも可能です。
「値のいれもの」の型は .to_i (数値へ変換) や .to_s (文字列へ変換) や .to_f (小数点つき数値へ変換) を行うこともできます。.to_なんとか は変換担当、と覚えておくとよさそうです。
定数すべて大文字の変数(?)は、定数となります。 定数は「最初に値をセットしたら、最初の値のまま変わらない」特性をもっています。 よって、定数に「2度目以降の値セット」をしようとすると警告が出ます。
擬似変数擬似変数というものが定義されています。
検証コード (puts ほげほげ で文字列の表示、puts ほげほげ.class で型の表示) を書いてみました。 puts ではなく p を呼んでいるのは、文字列型は " " でくくってくれてわかりやすいからです。
言語に組み込まれた変数・定数その他
|