低レベルインフラエンジニアの忘備録

Linux系の各種作業を自分用の忘備録として残しています

【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」と表示される

 

PerlPHPオブジェクト指向のプログラムは組んでいたのですが、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)グローバル変数

どこからでも参照・変更できる変数です。「$」から始まる変数です。

$hoge = 'saosao'

def display_saosao
    puts $hoge                            ⇒「saosao」と表示
end

display_saosao

 あまり使うことはないですかね。。。。

 

(5)定数

変化しない値です。大文字アルファベットで始まる必要があります。

HOGE = 'saosao'

puts HOGE                     ⇒「saosao」と表示