gpt4 book ai didi

ruby-on-rails - 为什么 do/end 和 {} 不总是等价的?

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

<分区>

Possible Duplicate:
Ruby block and unparenthesized arguments
What is the difference or value of these block coding styles in Ruby?

我一直认为以下只是同一件事的两种表达方式:

[1,2,3].collect{|i| i * 2}

[1,2,3].collect do |i|
i * 2
end

但是我在我的一个 ERB 模板中发现了一些奇怪的行为,这两种语法似乎在做两件不同的事情。这段代码效果很好:

<%=raw @menu.collect { |m| 
content_tag("li") {
link_to(m.capitalize, url_for(:controller => m))
}
} %>

但是当我将其重写为:

<%=raw @menu.collect do |m| 
content_tag("li") do
link_to(m.capitalize, url_for(:controller => m))
end
end %>

...我最终得到了我的@menu 项目的串联字符串。我错过了什么吗?是否有一些微小的语法糖妨碍了这里?

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