我越来越交手护栏及,而我觉得我进步有一两件事,我很努力去用交手,这是非常基本的。我想了解的[] {}
和()
不同的使用是否有其使用的任何良好来源,并在那里你可以给初学者在识别时要使用一个或其他任何提示,或者我似乎在某些情况下,看当他们根本不需要时?
我知道这是非常基本的,但我一直在努力寻找能够简洁地解释它们与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. 回报率阵列-Count相同的元素,在包括价值
- 4. 的WebMethod回报String(不<?xml标记)
- 5. 用点符号VS括号标记
- 6. 回报率:错误编号参数
- 7. 回报率AJAX不是page.replace_html
- 8. 比较不同的范围与括号记号
- 9. 与回报率
- 10. MySQL的回报率排,如果存在,否则不同的行
- 11. Parallel.Foreach +良率回报?
- 12. 括号自动标记完成像dreamweaver?
- 13. 访问使用括号标记
- 14. jQuery的回报率的onclick
- 15. ActiveRecord的和回报率
- 16. MySQL的回报率为
- 17. 用另一个投资回报率替代投资回报率
- 18. 壳牌括号和报价
- 19. 回报率:不能更新模型
- 20. 型号使用HTML标记不同的名称和型号
- 21. 正则表达式返回方括号内的字符(但不包括括号)
- 22. Java的括号折射率匹配
- 23. JSF:包括相同Facelets标记
- 24. 使用jquery在span标记中用括号括起文本?
- 25. 计算回报率内部收益率
- 26. Java,StanfordNPP解析器:如何停止将尖括号标记为标记/标记化尖括号作为标点符号?
- 27. 为什么if语句不接受括号记号而不是点记号?
- 28. ANTLR:尾随括号的不同令牌
- 29. 回报率:.create尼尔斯
- 30. 回报率omniauth和facebooker2
+1我完全忘记使用{}作为块分隔符。 – Ron
我很感激。它以一种令人印象深刻的简洁方式为我阐明了一些事情。非常感激! – Tom
@Tom没有汗水;这些信息可以在大多数Ruby指南中找到,但不一定都在一个地方。我应该在RoR中补充说,它主要是ERb模板,在使用帮助程序避免语法错误时有时需要小心 - 这很容易让人有点sl。。 –