日記帳

日記です。

Rubyと遅延初期化

attr_reader を使ったgetterの方が速いのならそれを使いたくなるのが人情ってものではないでしょうか?

class LaterInitializationSelfOverrideToAttrReaderHello
	attr_reader :message
	alias :message_by_attr_reader :message
	def message
		unless @message then
			@message = Time::now.strftime("Hello @ %Y-%m-%d")
		end
		class << self
			alias :message :message_by_attr_reader 
		end
		@message;
	end
end

もっと簡単な書き方がありそうな気がするけど思い付きません.
とりあえずこれで initialize で初期化して attr_reader で定義したgetterでアクセスするのと速度的に並ぶはずです.あとはこれを一発定義できるメソッドがあれば文句なしです.