Ruby 中的“temps.each(&:valid?)”是啥意思? [复制]

Posted

技术标签:

【中文标题】Ruby 中的“temps.each(&:valid?)”是啥意思? [复制]【英文标题】:What does "temps.each(&:valid?)" mean in Ruby? [duplicate]Ruby 中的“temps.each(&:valid?)”是什么意思? [复制] 【发布时间】:2012-04-13 04:18:20 【问题描述】:

可能重复:What does map(&:name) mean in Ruby?

each 中的&:valid? 是什么意思? 我见过.each do |r| 或其他什么,但不确定这个是如何工作的?

【问题讨论】:

我认为这只是temps.collect |t| t.valid == true的简写 你可以阅读更多关于它here 这是 *** 上已经提出和回答的不少于 17 个其他问题的副本:Understanding [ClassOne, ClassTwo].each(&:my_method)、What does map(&:name) mean in Ruby?、What exactly is &:capitalize in Ruby?、Ruby/Ruby on Rails ampersand colon shortcut、Ruby : &:symbol syntax、 … …What is this &:last Ruby Construct Called?,What do you call the &: operator in Ruby?,What does map(&:name) do in this Ruby code?,What are :+ and &+ in ruby?,&:views_count in Post.published.collect(&:views_count),Ruby Proc Syntax,How does “(1..4).inject(&:+)” work in Ruby,… …What does following statement &:property ?、What does the & mean in the following ruby syntax?、Why would one use the unary operator on a property in ruby? i.e &:first、how does Array#map have parameter to do something like this?、what does &: mean in ruby, is it a block mixed with a symbol? 和 what is the functionality of “&:” operator in ruby?。 【参考方案1】:

& 称为to_proc 运算符。它将符号 (:valid?) 扩展为 Proc。 所以你的例子相当于:

temps.each  |t| t.valid? 

【讨论】:

【参考方案2】:

&:symbol 是符号的简写。

这是一篇很好的博客文章。 http://blog.hasmanythrough.com/2006/3/7/symbol-to-proc-shorthand

【讨论】:

以上是关于Ruby 中的“temps.each(&:valid?)”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

ruby Ruby中的节点(树实现)

ruby Ruby中的单例模式

ruby 装饰Ruby类中的每个方法

ruby Ruby中的命令模式

ruby Ruby中的气泡数组排序

ruby ruby中的示例链表