Mel*_*emi 8 ruby jrubyonrails curly-braces parentheses square-bracket
因此,Ruby 有时候使用大括号而不是要求它们的宽松容忍度导致了很多混乱,因为我正在尝试学习Rails以及何时/何地使用它们以及为什么?
有时参数或值会像(@user, @comment)它们看起来那样传递,而其他时候传递[ :user => comment ]的只是::action => 'edit'
我在谈论[] vs () vs {}的我们
规则是什么?你有什么技巧可以帮助你记住吗?
mae*_*ics 22
括号()用于对逻辑或数学表达式进行分组,并将参数分组到函数调用,例如:
a = 2 * (3 + 4)
b = (x==y) || (m==n)
Hash.new.send('[]=', :a, :b)
Run Code Online (Sandbox Code Playgroud)
Curly Braces {}用于散列文字和块,例如:
h = {1=>2, 2=>3}
h.each {|k,v| puts k+v}
Run Code Online (Sandbox Code Playgroud)
Square Brackets []用于数组文字,数组索引和切片,以及从哈希中获取,例如:
arr = [1, 2, 3]
two = arr[1]
three = h[2]
Run Code Online (Sandbox Code Playgroud)
为了混淆这个问题,散列文字也可以作为方法调用的参数就地使用,而不需要花括号或括号,只要它是最后一个参数(感谢samuil).此外,散列文字可以在方括号中就地使用,以创建包含散列的单项数组:
puts 1=>2, 3=>4 #=> 1234
[5=>6, 7=>8] #=> [{5=>6, 7=>8}]
Run Code Online (Sandbox Code Playgroud)
如有疑问,请始终使用括号对项目进行分组,并使用大括号包装哈希值.