サイログ。

~雑多な記事置き場~

やっぱりこれアカン

・・・Componentクラスの続き。

インスタンスコンポーネントを持ち、エンジン側ではシングルトンでアクセス・・・って考えていたけど、
やっぱり無理があるため、「シングルトンはデフォルトのコンポーネント管理、インスタンスではシーン独自のコンポーネント管理」で、
エンジンに引き渡すと。嗚呼、こっちのほうが自然だ。

というわけで、デフォルトのコンポーネント群をアクセスする「Components.default/default=」メソッドを追加して、
分かりやすいアクセサにしようと。

というわけで、出来たのがこんな感じ。

# encoding: UTF-8
# attrメソッドはクラス変数アクセスでも可能か?

class A
	METHODS = [:hoge, :fuga]
  METHODS2 = [:default]
  
	class << self
		attr_accessor *METHODS
    attr_reader *METHODS2
	end

  @default = self
  
	attr_accessor *METHODS

	def to_default
		METHODS.each{|name|
			A.__send__(name.to_s+"=", self.__send__(name))
		}
	end
end

a = A.new
a.hoge = 15
a.fuga = 20

a.to_default

a.hoge = 30
a.fuga = 40

puts A.hoge # => 15
puts A.fuga # => 20

x = A.default

puts x.hoge # => 15
puts x.fuga # => 20

puts a.hoge # => 30
puts a.fuga # => 40