変数
ローカル変数
=begin
ローカル変数テスト
=end
# 英字小文字から始まる
# 先頭が数字の変数名は作成できない
aaa=10
print("#{aaa}\n")
# 記号もOK
_bbb=200
print("#{_bbb}\n")
# 別の記号
print("#{@bb}\n")
クラス変数、インスタンス変数
=begin
クラス変数、インスタンス変数テスト
=end
# クラス定義
class TestClass
# クラス変数
@@objCnt = 0
def initialize
# インスタンス変数定義
@kingaku = 0
@@objCnt = @@objCnt + 1
end
def setKingaku(data)
@kingaku = @kingaku + data
end
def showKingaku
print("#{@kingaku}\n")
end
def objShow
print("#{@@objCnt}\n")
end
end
#インスタンス生成
obj1 = TestClass.new
obj1.objShow
obj1.setKingaku(12000) #値は左記のとおり
obj1.showKingaku
obj2 = TestClass.new
obj2.objShow #ここで値が2と表示される
obj2.setKingaku(5000) #値は左記のとおり
obj2.showKingaku
@@変数名でクラス内共通のクラス変数
@変数名でインスタンス単位に割り当てるインスタンス変数となる
グローバル変数
=begin
グローバル変数テスト
=end
#グローバル定義
$aaa = 10
#クラス定義
class TestClass
def show
print("#{$aaa}\n") # グローバル変数表示
$aaa = $aaa + 100
print("#{$aaa}\n") # グローバル変数表示
end
end
#グローバル変数表示
print("#{$aaa}\n")
#クラスインスタンスメソッドより出力
obj1 = TestClass.new
obj1.show
#グローバル変数表示
print("#{$aaa}\n")
「$変数名=値」でグローバル変数となる
範囲が広いので注意
定数
定数定義
=begin
定数定義
=end
# 大文字から始まるのが定数
AAA = "1111"
print("#{AAA}\n")
=begin
以下のように記述しても、上で既に定義されているのでワーニングエラー
AAA = "2222"
print("#{AAA}\n")
=end
# 先頭のみ大文字なら定数と認識する
Aaa = "2222"
print("#{Aaa}\n")
#記号の場合は変数扱いとなる
_Aaa = "3222"
print("#{_Aaa}\n")
_Aaa = "4222"
print("#{_Aaa}\n")
クラス定数
=begin
クラス定数
=end
class TestClass
#クラス内で定数を定義することでクラス定数とできる
CONST1 = 100
def show
print("#{CONST1}")
end
end
# クラス定数に直接アクセス
print("#{TestClass::CONST1}\n")
# メソッドよりアクセス
obj1 = TestClass.new
obj1.show
定数参照の優先順位
=begin
定数の優先順位
=end
CONST = "ccccc"
# クラス定義
class TestMain
CONST = "aaaaa"
end
# クラスTestMainを継承
class TestSub < TestMain
CONST = "bbbbb"
def show
print("#{CONST}\n") # 継承した場合は継承先のクラスの定数を使用
print("#{TestMain::CONST}\n") # 明示的に指定した場合はそのクラスの定数を設定
print("#{TestSub::CONST}\n") #
end
end
print("#{CONST}\n")
obj1 = TestSub.new
obj1.show
最終更新:2011年04月22日 22:34