Rubyでは、セットはSet [1,2,3]で初期化できます。配列も初期化できます:Array [1,2,3]
自分のクラスに同じことをするコードを書くことは可能ですか?それとも、いくつかの組み込みクラスの言語機能にすぎませんか?
Rubyでは、セットはSet [1,2,3]で初期化できます。配列も初期化できます:Array [1,2,3]
自分のクラスに同じことをするコードを書くことは可能ですか?それとも、いくつかの組み込みクラスの言語機能にすぎませんか?
はい、[]
と[]=
は単なるメソッドであるため、オーバーライドできます。
あなたはこのようなことを試すことができます:
class MyArray
attr_accessor :data
def self.[](*values)
obj = MyArray.new
obj.data = values
return obj
end
end
Rubyでは、foo[bar, baz]
は単なる構文糖衣ですfoo.[](bar, baz)
。必要なのは。という名前のメソッドだけです[]
。
ちなみに、あなたはただドキュメントを見る必要があります、例えばSet
:
[](*ary)
指定されたオブジェクトを含む新しいセットを作成します。
それがまさにそこにあるドキュメントです。
基本的に、必要なのは
class Foo
def self.[](*args, &block)
new(*args, &block)
end
end
class X
attr_accessor :contents
def self.[](*x)
obj = self.new
obj.contents = x
obj
end
end