使用do block vs braces {}新的紅寶石,穿上你的新手套。以下兩個片段之間是否有任何區(qū)別(模糊或?qū)嵱茫??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條經(jīng)驗 獲得超4個贊
Ruby cookbook說括號語法的優(yōu)先順序高于do..end
請記住,括號語法的優(yōu)先級高于do..end語法??紤]以下兩段代碼:
1.upto 3 do |x| puts xend1.upto 3 { |x| puts x }# SyntaxError: compile error
第二個例子僅在使用括號時有效, 1.upto(3) { |x| puts x }

Qyouu
TA貢獻1786條經(jīng)驗 獲得超11個贊
通常,慣例是{}
在進行小操作時使用,例如,方法調(diào)用或比較等,所以這很有意義:
some_collection.each { |element| puts element }
但是,如果你有一些稍微復雜的邏輯,那就是多行,那do .. end
就像使用:
1.upto(10) do |x| add_some_num = x + rand(10) puts '*' * add_some_numend
基本上,它歸結(jié)為,如果您的塊邏輯轉(zhuǎn)到多行并且無法安裝在同一行上,那么使用do .. end
并且如果您的塊邏輯很簡單,那么只需使用簡單/單行代碼{}
。
- 3 回答
- 0 關(guān)注
- 670 瀏覽
添加回答
舉報
0/150
提交
取消