我越來越交手護欄及,而我覺得我進步有一兩件事,我很努力去用交手,這是非常基本的。我想了解的[] {}
和()
不同的使用是否有其使用的任何良好來源,並在那裏你可以給初學者在識別時要使用一個或其他任何提示,或者我似乎在某些情況下,看當他們根本不需要時?
我知道這是非常基本的,但我一直在努力尋找能夠簡潔地解釋它們與Ruby之間的相互作用的文獻,或者特別是RoR回報率不同的括號標記
回答
它與RoR無關;各種括號是Ruby語言結構。
[]
是數組運算符,數組和實現它的其他類(如字符串採取了一系列讓子,或哈希查找鍵的值):
a = [1, 2, 3]
a.each { |n| puts n }
s = "ohai"
puts s[1..-1]
h = { foo: "bar", baz: "plugh" }
puts h[:foo]
{}
是哈希,和的限定塊的兩種方法之一(另一個是begin
/end
)。 (並與#
用於字符串內插。)
h = { foo: "bar", baz: "plugh" }
h.each { |k, v| puts "#{k} == #{v}" }
()
爲方法的參數,或者在表達式執行計算順序。
> puts 5 * 3 + 5 # Normal precedence has * ahead of +
=> 20
> puts 5 * (3 + 5) # Force 3+5 to be evaluated first
=> 40
def foo(s)
puts(s)
end
他們如果語句沒有歧義有時可選:
def foo s
puts s
end
(他們不是總是可選,並把方法調用和它的括號參數列表之間的空間可以導致的問題 - 沒有最好,IMO)
(我可能錯過了一些東西,也不過有果殼)
。 0[]用於(經由鍵)或陣列(通過指數)內的散列內訪問的對象。
hash[:key] # returns a value
array[0] # returns the first array element
[]用於描述一個數組。
array = ['a', 'b', 'c']
當然,這可以被嵌套。
nested = [['a','b','c'], [1,2,3]]
[]可用於聲明一個散列值,但這是因爲哈希類可以接受的陣列。
hash = Hash[['a',1], ['b',2]] # { 'a' => 1, 'b', => 2 }
{}用來聲明的散列。
hash = { 'a' => 1, 'b' => 2 }
這也可以嵌套。
hash = { 'a' => { 'c' => 3 }, 'b' => { 'd' => 4 } }
{}也用於分隔塊。 .each
方法是常見的方法。以下兩段代碼是等同的。
array.each do |n|
puts n
end
array.each { |n| puts n }
()僅用於歧義需要澄清的情況下的分組。對於需要許多參數的方法尤其如此,其中一些參數可能爲零,其中一些可能是對象等。您會看到很多代碼完全省略它們,因爲爲了清晰起見不需要分組。
puts(string)
puts string
我建議發射了rails console
並開始聲明變量和訪問他們。
方法調用中的參數個數並不是真正的歧義原因,當參數是一個方法調用等時,必須使用parens使詞法分析器高興。 –
非常感謝,特別是關於數組和哈希嵌套的信息。 – Tom
- 1. 括號標記
- 2. 回報率 - 刪除逗號
- 3. 回報率:每記錄
- 4. 回報率陣列-Count相同的元素,在包括價值
- 5. IE8點與括號標記
- 6. 的WebMethod回報String(不<?xml標記)
- 7. 用點符號VS括號標記
- 8. 回報率:錯誤編號參數
- 9. 回報率AJAX不是page.replace_html
- 10. 比較不同的範圍與括號記號
- 11. 與回報率
- 12. MySQL的回報率排,如果存在,否則不同的行
- 13. Parallel.Foreach +良率回報?
- 14. jQuery的回報率的onclick
- 15. 括號自動標記完成像dreamweaver?
- 16. 訪問使用括號標記
- 17. 在{花括號}中解析標記
- 18. onDragStart返回一個不同的標記
- 19. PHP preg_match_all:括號內的括號標籤
- 20. MySQL的回報率爲
- 21. ActiveRecord的和回報率
- 22. 使用括號記號
- 23. 用另一個投資回報率替代投資回報率
- 24. 水晶報告記錄號不包括「抑制記錄(細節部分)」
- 25. 不JS括號標記的功能invokations在所有瀏覽器
- 26. 殼牌括號和報價
- 27. 回報率:不能更新模型
- 28. 回報率:first_or_initialize塊不保存
- 29. 型號使用HTML標記不同的名稱和型號
- 30. 帶括號返回並且沒有得到不同的結果
+1我完全忘記使用{}作爲塊分隔符。 – Ron
我很感激。它以一種令人印象深刻的簡潔方式爲我闡明瞭一些事情。非常感激! – Tom
@Tom沒有汗水;這些信息可以在大多數Ruby指南中找到,但不一定都在一個地方。我應該在RoR中補充說,它主要是ERb模板,在使用幫助程序避免語法錯誤時有時需要小心 - 這很容易讓人有點sl。。 –