【Ruby】変数、定数
Ruby勉強中なのでいろいろまとめていこうと思ってます。
(1)ローカル変数
ローカルなスコープでのみ有効な関数です。
小文字またはアンダーバーで始める変数です。
hoge = 'saosao'
def display_saosao
puts hoge ⇒「undefined local variable or method」でエラー
end
puts hoge ⇒「saosao」と表示される
display_saosao
(2)インスタンス変数
インスタンスの中だけで参照できる変数をインスタンス変数と言います。「@」から始まる変数です。
class MyClass
def setName(str)
@name = str
end
def getName()
return @name
end
end
obj1 = MyClass.new()
obj2 = MyClass.new()
obj1.setName("Saosao1")
obj2.setName("Saosao2")
puts obj1.getName() ⇒「saosao1」と表示される
puts obj2.getName() ⇒「saosao2」と表示される
インスタンス変数を外部からアクセスできるようにするにはattr_accessorを利用します。
class MyClass
attr_accessor :hoge
end
obj = MyClass.new()
obj.hoge = 'saosao'
puts obj.hoge ⇒「saosao」と表示される
PerlやPHPでオブジェクト指向のプログラムは組んでいたのですが、attr_accessorのような記述はなかったので、理解しにくい。。。。^^;
(3)クラス変数
同じクラスの全てのインスタンスで一意となる変数です。「@@」から始まる変数です。
class MyClass
def setName(str)
@@name = str
end
def getName()
return @@name
end
end
obj1 = MyClass.new()
obj2 = MyClass.new()
obj1.setName("Saosao")
puts obj1.getName() ⇒「Saosao」と表示
puts obj2.getName() ⇒「Saosao」と表示
(4)グローバル変数
どこからでも参照・変更できる変数です。「$」から始まる変数です。
あまり使うことはないですかね。。。。
(5)定数
変化しない値です。大文字アルファベットで始まる必要があります。