4月 7th, 2008at 16:15
Tags: Ruby
Ruby1.8.5の変数と定数
ローカル変数
トップレベルの変数はプログラムの終わりまで有効
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 endend class Child01 < ClassParam p @@class_param += 1end class Child02 < ClassParam p @@class_param += 1end class ChildChild01 < Child02 p @@class_param += 1end test_class = ClassParam.newputs "@@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_paramtest_class = GlobalParam.newputs test_class.getGlobal() class TestClass def print() puts $global_param $global_param = "変更してみる" puts $global_param end end test_class = TestClass.newtest_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.newcls.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.rb23
定数
大文字で始まる変数は定数となる。
class Constance TEISU = "これは定数だよー" end puts Constance::TEISU #::でアクセス
実行結果
これは定数だよー




