ローカル変数
トップレベルの変数はプログラムの終わりまで有効
if true then
local_param = "ifの中"
end
puts local_param
実行結果
ifの中
ifの中
インスタンス変数
オブジェクトに固有の変数
class TestClass #クラス名は大文字始まり
TEISU = "定数" #定数は大文字から始まると勝手になる
@instance_param = "instance_param" #インスタンス変数
def printMessage(message)
puts @instance_param
@instance_param = "instance_param 2"
puts @instance_param
puts message
end
end
test_class = TestClass.new #インスタンス作成
test_class.printMessage("message")
実行結果
nil #一回目はnilになる
instance_param 2 #代入した値が入る
message
クラス変数
- 再代入可能(定数は警告を出す)
- クラスの外から直接参照できない(継承されたクラスからは参照/代入可能)
- サブクラスから参照/代入が可能
- インスタンスメソッドから参照/代入が可能
class ClassParam
@@class_param = 1
def getClassParam()
return @@class_param
end
end
class Child01 < ClassParam
p @@class_param += 1
end
class Child02 < ClassParam
p @@class_param += 1
end
class ChildChild01 < Child02
p @@class_param += 1
end
test_class = ClassParam.new
puts "@@class_paramの値"
puts test_class.getClassParam()
実行結果
@@class_paramの値
4
グローバル変数
プログラムのどこからでも参照できる変数
puts $global_param
class GlobalParam
$global_param = "これはGlobalなのだ"
def getGlobal()
return $global_param
end
end
puts $global_param
test_class = GlobalParam.new
puts test_class.getGlobal()
class TestClass
def print()
puts $global_param
$global_param = "変更してみる"
puts $global_param
end
end
test_class = TestClass.new
test_class.print()
実行結果
nil
これはGlobalなのだ
これはGlobalなのだ
これはGlobalなのだ
変更してみる
疑似変数
self
現在のメソッドの実行主体
puts self
class TestClass
def print()
puts self
self.print2()
end
def print2()
puts "print2"
end
end
cls = TestClass.new
cls.print()
実行結果
main
#<TestClass:0x296c380>
print2
nil
NilClassクラスの唯一のインスタンス
true
TrueClassクラスの唯一のインスタンス。真の代表値
false
FalseClassクラスの唯一のインスタンス。nilとfalseは偽を表します。
ソースファイル名と行番号
「__FILE__」・・・現在のソースファイル名 *1
「__LINE__」・・・現在のソースファイル中の行番号
puts __FILE__
puts __LINE__
puts __LINE__
実行結果
D:/daipresents/project/ruby/src/test/file_name_line_number.rb
2
3
定数
大文字で始まる変数は定数となる。
class Constance
TEISU = "これは定数だよー"
end
puts Constance::TEISU #::でアクセス
実行結果
これは定数だよー