相关疑难解决方法(0)

map(&:name)在Ruby中意味着什么?

我在RailsCast中找到了这段代码:

def tag_names
  @tag_names || tags.map(&:name).join(' ')
end
Run Code Online (Sandbox Code Playgroud)

什么是(&:name)中map(&:name)意味着什么?

ruby syntax operators parameter-passing

483
推荐指数
11
解决办法
12万
查看次数

你能在Ruby中提供map(&:method)语法的参数吗?

您可能熟悉以下Ruby简写(a是一个数组):

a.map(&:method)
Run Code Online (Sandbox Code Playgroud)

例如,在irb中尝试以下操作:

>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
Run Code Online (Sandbox Code Playgroud)

语法a.map(&:class)是一种简写a.map {|x| x.class}.

阅读" Ruby中的map(&:name)是什么意思? "中有关此语法的更多信息.

通过语法&:class,您class将为每个数组元素进行方法调用.

我的问题是:你能为方法调用提供参数吗?如果是这样,怎么样?

例如,如何转换以下语法

a = [1,3,5,7,9]
a.map {|x| x + 2}
Run Code Online (Sandbox Code Playgroud)

在&:语法?

我并不是说&:语法更好.我只是对使用&:带参数的语法的机制感兴趣.

我假设你知道这+是Integer类的一个方法.您可以在irb中尝试以下操作:

>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2
Run Code Online (Sandbox Code Playgroud)

ruby

110
推荐指数
7
解决办法
3万
查看次数

to_proc方法是什么意思?

我正在学习rails并遵循这个主题.我坚持使用这种to_proc方法.我认为符号只是字符串的替代品(它们就像字符串,但在内存方面更便宜).如果还有其他我想念的符号,那么请告诉我.请以简单的方式解释什么to_proc方法和用途.

ruby syntax symbols block proc

44
推荐指数
3
解决办法
2万
查看次数

&method(:method_name)在Ruby中的性能是否有害?

我最近遇到了&method(:method_name)语法.(这使用Object#method方法 - RDoc链接)例如,

[5, 7, 8, 1].each(&method(:puts))
Run Code Online (Sandbox Code Playgroud)

相当于

[5, 7, 8, 1].each{|number| puts number}
Run Code Online (Sandbox Code Playgroud)

在Ruby的各种实现中,与前者相比,后者是否存在性能损失?如果是这样,实施者是否正致力于改善其绩效?

ruby performance

12
推荐指数
3
解决办法
3377
查看次数

是否可以在参数中使用&:(&符号冒号)表示法或在Ruby中使用链接?

我想做的事情如下:

[1, 2, 3].map(&:to_s(2))
Run Code Online (Sandbox Code Playgroud)

另外,如何做类似的事情:

[1, 2, 3].map(&:to_s(2).rjust(8, '0'))
Run Code Online (Sandbox Code Playgroud)

?

ruby syntax

9
推荐指数
2
解决办法
3840
查看次数