你可能对下面的Ruby速记很熟悉(a
是一个数组):
a.map(&:method)
例如,在irb中尝试执行以下操作:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
语法a.map(&:class)
是a.map {|x| x.class}
的简写形式。
在"What does map(&:name) mean in Ruby?“中阅读有关此语法的更多信息。
通过语法&:class
,您可以为每个数组元素调用class
方法。
我的问题是:你能为方法调用提供参数吗?如果是这样,又是如何做到的呢?
例如,如何转换以下语法
a = [1,3,5,7,9]
a.map {|x| x + 2}
&:
语法吗?
我并不是说&:
语法更好。我只对使用带参数的&:
语法的机制感兴趣。
我假设您知道+
是Integer类上的一个方法。您可以在irb中尝试以下操作:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2
https://stackoverflow.com/questions/23695653
复制相似问题