4月 7th, 2008at 16:15

Tags:

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 #::でアクセス

実行結果

これは定数だよー
このエントリーをはてなブックマークに追加