gpt4 book ai didi

ruby-on-rails - map(& :name) do in this Ruby code? 是什么意思

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:40 24 4
gpt4 key购买 nike

为了更好地理解 Ruby,我在网上冲浪时遇到了这段代码:

require 'rubygems'
require 'activeresource'



ActiveResource::Base.logger = Logger.new("#{File.dirname(__FILE__)}/events.log")

class Event < ActiveResource::Base
self.site = "http://localhost:3000"
end

events = Event.find(:all)
puts events.map(&:name)

e = Event.find(1)
e.price = 20.00
e.save

e = Event.create(:name => "Shortest event evar!",
:starts_at => 1.second.ago,
:capacity => 25,
:price => 10.00)
e.destroy

我特别感兴趣的是 events.map(&:name) 是如何工作的?我看到 events 是一个数组,因此它调用了它的 map 方法。现在我的问题是,传递给 map 的 block 在哪里创建?在这种情况下,符号 :name 是什么?我试图了解它是如何工作的。

最佳答案

events.map(&:name)

完全等同于

events.map{|x| x.name}

它只是方便的语法糖。

有关详细信息,请查看Symbol#to_proc 方法here .此处,:name 被强制转换为 proc。

顺便说一句,这在这里经常出现 - 很难用谷歌搜索或以其他方式搜索“带符号的冒号”:)。

关于ruby-on-rails - map(& :name) do in this Ruby code? 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2388337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com