proc数组或lambda数组

Dar*_*ous 4 ruby lambda

有没有办法在ruby中创建lambda数组或procs数组?我已经能够定义每个数组,但是我无法弄清楚在数组中调用lambda / procs的语法。

作为一个愚蠢的虚构示例,请考虑以下问题:

a = [ 1, 2, 3, 4, 5, 6, 7, 8]
b = [2, 3, 5, 7, 10]

c = [
  Proc.new { |x| a.include? x },
  Proc.new { |x| true },
  Proc.new { |x| b.include? x }
]

def things_checker(element, checks)
  z = 0
  checks.each do |check|
    p z
    break unless check(element)
    z = z + 1
  end
end

things_checker(3, c)
Run Code Online (Sandbox Code Playgroud)

我想不通一种check(element)不会成为语法错误的方法。

Ale*_*kin 5

proc在Ruby中有很多方法可以调用a 。所有这些都将起作用:

break unless check.call(element)
break unless check.(element)
break unless check[element]
Run Code Online (Sandbox Code Playgroud)

乃至:

break unless check === element
Run Code Online (Sandbox Code Playgroud)

恕我直言,在您提供的示例中,后者在语义上基本上是正确的。之所以起作用,是因为发明了三重相等(也称为大小写相等)用于case语句中,以检查对参数的调用结果是否为真。