我想要这段代码:
ngModule
使用[1,2,3].all? {|x| x.is_a?(Integer)}
方法工作,如:
&:
但是我收到了这个错误:
[1,2,3].all?(&:is_a?(Integer))
我猜是因为我将syntax error, unexpected '(', expecting ')'
称为符号。
如何将整数传递给is_a?(Integer)
?
答案 0 :(得分:3)
这是不可能的。您无法将Integer
(或其他任何内容)传递给符号:is_a?
。符号不会引起争论。 Ruby中没有对象接受参数(没有方法调用)。
顺便说一句,没有&:
这样的东西。
答案 1 :(得分:2)
你可以用lambda接近你想要的符号:
is_an_int = ->(o) { o.is_a?(Integer) }
[1,2,3].all?(&is_an_int)
或更近,一个返回lambda的lambda:
is_a = ->(c) { ->(o) { o.is_a?(c) } }
[1,2,3].all?(&is_a[Integer])
在这种情况下可能比它的价值更麻烦,但也是有用的技术。