方括号:【Brackets】,圆括号:(Parentheses)和花括号:{Curlies}在Ruby和Rails中的使用

8

因为Ruby的宽松容错性,有时可以使用括号,而不是强制要求使用括号,这给我在学习Rails时何时/在哪里使用每个括号以及为什么使用它们带来了很多困惑。

有时参数或值会作为(@user, @comment)传递,而其他时候它们似乎是[ :user => comment ],还有一些只是::action => 'edit'

我说的是[ ] vs ( ) vs { }的用法。

规则是什么?你有什么技巧可以帮助你记住吗?


1
FYI,"{" 和 "}" 是唯一的“大括号”。所有这些符号的通用术语都是括号。当没有指定时,单词“括号”指代方括号。 - tster
1个回答

22

括号()用于分组逻辑或数学表达式以及函数调用的参数,例如:

a = 2 * (3 + 4)
b = (x==y) || (m==n)
Hash.new.send('[]=', :a, :b)

花括号{}用于哈希字面量和块,例如:

h = {1=>2, 2=>3}
h.each {|k,v| puts k+v}

方括号[]用于数组字面量,数组索引和切片,以及从哈希表中获取值,例如:

arr = [1, 2, 3]
two = arr[1]
three = h[2]

为了让事情更加混乱,哈希字面量也可以作为参数直接传递给方法调用,无需花括号或者括号,只要它是最后一个参数即可(感谢samuil)。此外,哈希字面量还可以在方括号中使用,以创建包含哈希的单项数组:

puts 1=>2, 3=>4 #=> 1234
[5=>6, 7=>8]    #=> [{5=>6, 7=>8}]

如果有疑问,始终使用括号将项分组,并用花括号包装哈希。


4
请注意,当将哈希作为参数传递给函数时,只有最后一个可以省略花括号。在省略时请确保不改变原意。 - samuil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接