因此,当我尝试学习 Rails 以及何时/何地使用它们以及为什么使用它们时,Ruby有时使用大括号而不是 REQUIRE 它们的宽松容忍度给我带来了很多困惑?
有时参数或值被传递,(@user, @comment)
有时它们似乎是[ :user => comment ]
,还有一些只是::action => 'edit'
我说的是[ ] vs ( ) vs { }
都有些什么样的规矩?有什么技巧可以帮助你记住吗?
因此,当我尝试学习 Rails 以及何时/何地使用它们以及为什么使用它们时,Ruby有时使用大括号而不是 REQUIRE 它们的宽松容忍度给我带来了很多困惑?
有时参数或值被传递,(@user, @comment)
有时它们似乎是[ :user => comment ]
,还有一些只是::action => 'edit'
我说的是[ ] vs ( ) vs { }
都有些什么样的规矩?有什么技巧可以帮助你记住吗?
括号()
用于对逻辑或数学表达式进行分组以及对函数调用的参数进行分组,例如:
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}]
如有疑问,请始终使用括号对项目进行分组并将哈希值包裹在花括号中。