代码之家  ›  专栏  ›  技术社区  ›  Meltemi

大括号:ruby&rails中的[括号],(括号)和{curlies}

  •  8
  • Meltemi  · 技术社区  · 14 年前

    所以ruby对大括号的宽松容忍度 有时 在我学习rails的过程中,不需要它们已经给我带来了很多困惑,何时何地使用它们,为什么?

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

    我说的是我们 [] () {}

    规则是什么?有什么诀窍能帮你记住吗?

    1 回复  |  直到 14 年前
        1
  •  22
  •   maerics    14 年前

    圆括号 () 用于对逻辑或数学表达式进行分组,并对函数调用的参数进行分组,例如:

    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]
    

    为了混淆这一点,hash文本也可以用作方法调用的参数,而不需要大括号或圆括号,只要它是最后一个参数(感谢samuil)。此外,可以在方括号中使用哈希文本来创建包含哈希的单个项数组:

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

    如果有疑问,请始终使用括号对项进行分组,并用大括号将散列括起来。