将块传递给 Ruby 中委托的 << 数组方法

3

我创建了一个委托数组类,如下所示:

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

是否可以将一个块传递给 <<,如果可以的话,有人能指点我正确的方法吗?

1个回答

1

你可以使用方法调用语法来完成:

arr.<<(part, &predicate)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接