2. 変数と定数
2.1 変数とは
変数とは、他の言語でもおなじみの文字列や数値等の情報を一時的に格納しておくものです。
1章でもご説明した通り、Rubyでは文字列や数値等の情報はすべて「オブジェクト」です。
変数はオブジェクトを識別するために利用します。
変数は「ローカル変数」「グローバル変数」「インスタンス変数」「クラス変数」の4種類に分けることができます。
ここでは「ローカル変数」のみを扱い、他の変数については後の章でご説明します。
2.2 識別子
Ruby では識別子の最初の 1 文字によって変数の種類を区別します。
ローカル変数は識別子の先頭が英小文字、もしくは「_」で始めます(2文字目以降は数字も利用できます)。
慣習としてはすべて英小文字か数字で、単語の区切りは「_」とします。
2.3 変数宣言と代入
ローカル変数は、それが宣言された時点で使用できるようになります。
ローカル変数に使用可能な識別子(英小文字または「_」で始まる識別子)への最初の代入が、ローカル変数の宣言となります。
言葉で説明すると難しく感じますが、以下のような一文がローカル変数の宣言となります。
x = 10
1章の特徴でも挙げたように、Rubyは「動的型付け言語」です。
変数宣言の際に変数のデータ型の指定は必要なく、どのようなデータでも代入することができます。
つまり、最初は数値を代入し、その後に文字列を代入する、ということができます。
# 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
関連記事
- 3. 変数 : Javaのローカル変数について説明します。