我看到了来自here的代码
Post.published.collect(&:views_count)我猜它等于
.collect { |p| p.views_count }但是我从来没有见过这种用法,这有名字吗?我在哪里可以找到关于它的更多信息?
发布于 2010-10-08 14:06:24
这实际上是一个相当聪明的技巧,将其添加到ruby1.9中。
基本上,在ruby中,变量前面的&强制它成为一个进程。它通过调用to_proc来做到这一点。一些聪明的家伙(我第一次看到这是在_whys代码中,但我不会相信他,因为我不知道是不是他想出来的)向Symbol添加了一个to_proc方法,本质上就是{|obj| obj.send self}。
ruby中没有太多的强制代码,但似乎所有的代码都被用来做这样的黑客工作(比如!)将任何类型强制转换为布尔值)
发布于 2010-10-08 14:07:54
这是Symbol#to_proc的一个用法。Ruby运算符将Proc对象转换为块,并且因为& 1.8.7和更高版本实现了Symbol#to_proc,所以它可以与:views_count这样的符号一起使用。是的,它等同于{|p| p.views_count}。
https://stackoverflow.com/questions/3888044
复制相似问题