为了账号安全,请及时绑定邮箱和手机立即绑定

使用do block vs braces {}

使用do block vs braces {}

拉风的咖菲猫 2019-08-06 17:03:34
使用do block vs braces {}新的红宝石,穿上你的新手套。以下两个片段之间是否有任何区别(模糊或实用)?my_array = [:uno, :dos, :tres]my_array.each { |item|      puts item}my_array = [:uno, :dos, :tres]my_array.each do |item|      puts itemend我意识到括号语法允许你将块放在一行上my_array.each { |item| puts item }但除此之外是否有任何令人信服的理由使用一种语法而不是另一种语法?
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

Ruby cookbook说括号语法的优先顺序高于do..end

请记住,括号语法的优先级高于do..end语法。考虑以下两段代码:

1.upto 3 do |x|
  puts xend1.upto 3 { |x| puts x }# SyntaxError: compile error

第二个例子仅在使用括号时有效, 1.upto(3) { |x| puts x }


查看完整回答
反对 回复 2019-08-06
?
Qyouu

TA贡献1786条经验 获得超11个赞

通常,惯例是{}在进行小操作时使用,例如,方法调用或比较等,所以这很有意义:

some_collection.each { |element| puts element }

但是,如果你有一些稍微复杂的逻辑,那就是多行,那do .. end就像使用:

1.upto(10) do |x|
  add_some_num = x + rand(10)
  puts '*' * add_some_numend

基本上,它归结为,如果您的块逻辑转到多行并且无法安装在同一行上,那么使用do .. end并且如果您的块逻辑很简单,那么只需使用简单/单行代码{}


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 589 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信