有没有办法使用类似的语法:
array.map(&:some_method)
将元素映射到自身,以便它等同于以下内容?
array.map{ |x| x }
这样的事情(伪代码):
array.map(&:self)
答案 0 :(得分:2)
我不确定这是否是您要做的,但听起来您可以使用clone
方法docs。即array.clone
答案 1 :(得分:2)
是。你可以这样做:
array.map(&:itself)
答案 2 :(得分:0)
如果您有一些字符串数组,则可以
pry(main)> a.map{|x| eval x}
=> [4]
但eval
不是字符串方法。在这种情况下,您需要在map
中放置一个var。
另外,我认为这段代码会比我更好
2.3.0 :001 > a=[]
=> []
2.3.0 :002 > b=def foo
2.3.0 :003?> 2+2
2.3.0 :004?> end
=> :foo
2.3.0 :005 > a<<b
=> [:foo]
2.3.0 :006 > a.map{&:send}
SyntaxError: (irb):6: syntax error, unexpected &
a.map{&:send}
^
from /home/kvokka/.rvm/rubies/ruby-2.3.0/bin/irb:11:in `<main>'
2.3.0 :007 > a.map{|x| send x}
=> [4]