我创建了一个委托数组类,如下所示:
class LeadPartArray < DelegateClass(Array)
def <<(part, &block)
super(part) unless @arr.select{|p| p.text == part.text}.size > 0
end
def initialize(arr = [])
@arr = arr
super(@arr)
end
end
我正在覆盖 << 方法,希望能够传递一个块作为谓词。
我有以下测试,甚至不是合法的 Ruby 语法:
def test_should_pass_predicates_to_add
arr = LeadPartArray.new([])
part = LeadCapturer::LeadPart.new("text", LeadCapturer::TextTag.new, 2)
predicate = Proc.new{|part| part.text.size < 4}
arr <<(part, &predicate)
assert_equal(0, arr.size)
end
是否可以将一个块传递给 <<,如果可以的话,有人能指点我正确的方法吗?