ruby - `&:views_count` 在 `Post.published.collect(&:views_count)`

标签 ruby parameter-passing

<分区>

我看到了来自 here 的代码

Post.published.collect(&:views_count)

我猜它等于

.collect { |p| p.views_count }

但我以前从未见过这种用法,请问这个有名字吗?我在哪里可以找到有关它的更多信息?

最佳答案

这实际上是 ruby​​ 1.9 中的一个相当聪明的 hack。

基本上,& 在 ruby​​ 中的变量前面将其强制转换为 proc。它通过调用 to_proc 来实现。一些聪明的家伙(我第一次看到这是在 _whys 代码中,但我不会相信他,因为我不知道他是否想出了它)向 Symbol 添加了一个 to_proc 方法,本质上就是 {|obj| obj.send self.

ruby 中的 coercians 并不多,但似乎所有的 coercians 都主要用于做这样的 hack(比如 !! 将任何类型强制转换为 bool 值)

关于ruby - `&:views_count` 在 `Post.published.collect(&:views_count)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888044/

相关文章:

c# - 在 C# 中将指向结构的指针作为函数参数传递

php - Ruby/Ruby on Rails 与 PHP

ruby - 在 Ruby 1.9.3 中,一个向量不能乘以另一个向量?

performance - 当函数参数是接口(interface)时复制什么

c++ - 可以将 &my_boost_array_variable[2] 传递给期望 void* 的 C 函数吗?

bash - xargs 不适用于内置的 shell 函数

ruby - 在 Ruby 中设置请求 header

arrays - 我如何重构这个 Ruby 方法来运行得更快?

ruby-on-rails - 动态设计发件人电子邮件地址

c++ - 将具有不同值类型的映射传递给 C++ 中的函数