塩焼きブログ

塩焼きに関しての研究内容を公開しています

Rubyのクラス変数

クラス変数はインスタンスメソッドやクラスメソッドからアクセスできる

class Message

  @@timezone = "Europe/London"

  def initialize(name)
    ENV['TZ'] = @@timezone
    @name = name
  end

  def hello
    "Hello #{@name} " + Time.now.to_s
  end

end
msg = Message.new("Jane")
p msg.hello
# "Hello Jane 2014-09-22 08:20:29 +0100"

インスタンスメソッド内で代入と参照ができる

class Message

  @@timezone = "Europe/London"

  def initialize(name)
    @@timezone = "Asia/Tokyo"
    ENV['TZ'] = @@timezone
    @name = name
  end

  def hello
    "Hello #{@name} " + Time.now.to_s
  end

end
msg = Message.new("Jane")
p msg.hello
# "Hello Jane 2014-09-22 16:15:05 +0900"

クラスメソッドからもきっちり代入とアクセスができる

require "Time"
class Message

  @@timezone = "Europe/London"

  def self.hello(name)
    @@timezone = "Asia/Tokyo"
    ENV['TZ'] = @@timezone
    "Hello #{name} " + Time.now.to_s
  end

end

p Message.hello("Jane")
# "Hello Jane 2014-09-22 16:17:43 +0900"