2. 変数と定数
2.1 変数とは
変数とは、他の言語でもおなじみの文字列や数値等の情報を一時的に格納しておくものです。
1章でもご説明した通り、Rubyでは文字列や数値等の情報はすべて「オブジェクト」です。変数はオブジェクトを識別するために利用します。
変数は「ローカル変数」「グローバル変数」「インスタンス変数」「クラス変数」と4種類に分けることができますが、ここでは「ローカル変数」のみを扱い、他の変数については後の章でご説明します。
2.2 識別子
変数には「識別子」という名前を付けます。Rubyではこの識別子の表記によって変数の種類を判別することができます。
ローカル変数は識別子の先頭が英小文字、もしくは「_」で始まります。2文字目以降は数字も利用できます。
慣習としてはすべて英小文字か数字で、単語の区切りは「_」とします。
2.3 変数宣言と代入
変数を利用する際には宣言が必要です。ローカル変数では、変数の最初の代入が変数宣言となります。
Rubyは 1章の特徴でも上げたように「動的型付け言語」です。つまり変数宣言の際に変数のデータ型の指定は必要なく、どのようなデータでも入れることができます。
# coding: windows-31j number = 1 # numberという変数を宣言し、1を代入 name = "yamada" # nameという変数を宣言し、「yamada」を代入 puts number puts name number = "一" # 数値の1が代入されていたnumberに、文字列を代入できる。 puts number number = name # 変数「name」の値を、変数「number」に代入 puts number
■ 実行結果
> ruby variable_test.rb
1
yamada
一
yamada
2.4 nil
オブジェクトを何も参照していない変数というのを表すためには 「nil」という特殊な変数を使います。
putsメソッドでnilを出力すると、空文字として表示されます。これは空の文字列の場合と同じ表示になります。
nilであることを明示的に表示する必要がある場合は、pメソッドを利用してください。
# coding: windows-31j name = nil # 変数「name」はどのオブジェクトも参照していない puts "***nilの出力***" puts name p name name = "" # 変数「name」に空の文字列を代入 puts "***空文字の出力***" puts name p name
■ 実行結果
> ruby nil_test.rb
***nilの出力***
nil
***空文字の出力***
""
2.5 式展開
文字列中でRubyプログラムを扱いたい場合、Rubyプログラムを「#{}」で囲って、「”」で囲った文字列に埋め込みます。これを「式展開」といいます。
# coding: windows-31j
puts "1+1 = #{1+1}"
■ 実行結果
> ruby add_test.rb
1+1 = 2
式展開を利用すると、文字列中に変数の値を埋め込むこともできます。
# coding: windows-31j
name = "山田"
puts "私の名前は #{name} です"
■ 実行結果
> ruby interpolation_test.rb
私の名前は 山田 です
2.6 定数
定数とは、一度値を代入すると変更できない変数です。Rubyでは識別子の先頭が大文字である変数を、定数として認識します。
慣習としては識別子をすべて英大文字にし、単語の区切りを「_」とします。
一度値を代入した定数に再び値を代入しようとすると、警告メッセージが表示されます。
# coding: windows-31j CONST = 1 puts CONST CONST = 2
■ 実行結果
> ruby constant_test.rb
1
constant_test.rb:4: warning: already initialized constant CONST






