将数组映射到完全相同的数组的快捷方式

时间:2016-02-17 11:30:35

标签: ruby

有没有办法使用类似的语法:

array.map(&:some_method)

将元素映射到自身,以便它等同于以下内容?

array.map{ |x| x }

这样的事情(伪代码):

array.map(&:self)

3 个答案:

答案 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]