Rubyの勉強アウトプット
今回は、変数、定数について記載します。
変数
命名ルール
●先頭文字を大文字にすることはできない。
●1文字目に数字を使用することはできない。
●宣言と初期化を同時に行うこと(変数の宣言のみはNG)
変数種別
●変数の1文字目により、変数種別が決まります。
●種別ごとに、スコープの範囲が違います。
ローカル変数
●1文字目が、小文字または'_'で始まる変数は、ローカル変数になります。
●スコープは、定義された場所の範囲内のみ利用可能です。
name = "田中"
puts name
グローバル変数
●1文字目に、「$」をつけるとグローバル変数となります。
●スコープは、メソッドやクラスを超えて参照することができ、定義した場所に限らず、参照や変更をすることができます。
$name = "田中"
class NameClass
def nameShow
puts $name
end
end
nameClass = NameClass.new
nameClass.nameShow
インスタンス変数
●1文字目に、「@」をつけるとインスタンス変数となります。
●スコープは、宣言されたクラスまたはサブクラスから参照することができます。
●オブジェクト毎に、異なる値を割り当てることができます。
class ClassName
def setName(setName)
@name = setName
end
def showName()
puts @name
end
end
name = ClassName.new
name.setName("田中")
name2 = ClassName.new
name2.setName("佐藤")
name.showName #=>田中
name2.showName #=>佐藤
クラス変数
●変数の先頭に、「@@」をつけるとクラス変数となります。
●スコープは、宣言されたクラス、インスタンスメソッドから参照、変更をすることができます。
●宣言されたクラスの、全てのインスタンスで共有されます。
class ClassName
def setName(setName)
@name = setName
end
def showName()
puts @name
end
end
name = ClassName.new
name.setName("田中")
name2 = ClassName.new
name2.setName("佐藤")
name.showName #=>佐藤
name2.showName #=>佐藤
定数
●先頭文字をアルファベット大文字にすると定数となります。
●Rubyでは、定数定義後に再代入を行うと、警告が発生しますが値は変更されます。
Name = "aaa"
Name = "bbb"
puts Name
# 出力
warning: already initialized constant Name
warning: previous definition of Name was here
佐藤