有没有办法在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)不会成为语法错误的方法。
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语句中,以检查对参数的调用结果是否为真。
| 归档时间: |
|
| 查看次数: |
848 次 |
| 最近记录: |