Ruby Hashes的括号语法

egg*_*rop 3 ruby syntax hash

这两个语句是否将相同类型的参数(哈希)传递给新方法?

@seat = Seat.new(:flight_id => @flight.id)

@seat = Seat.new({:flight_id => @flight.id})
Run Code Online (Sandbox Code Playgroud)

哈希方括号{}是否会改变第二个例子中的任何内容?

wor*_*ad3 12

它们都是相同的,{}在第二个参数中没有添加任何东西,除了使事情比它们已经更明确(使用=>语法足以说'对于任何使用ruby任何长度的人来说这是一个哈希'时间).

Ruby会自动转换参数列表,如:

someFunction(:arg1 => value1, :arg2 => value2)
Run Code Online (Sandbox Code Playgroud)

进入哈希并将其作为单个参数传递给您.你需要在哈希周围添加{}的时候是你有哈希散列或需要两个哈希的函数(比如你需要传递两个选项和html_options时的几个rails方法),如下所示:

someFunction({:arg1 => value1, :arg2 => value2}, {:arg3 => value3})
Run Code Online (Sandbox Code Playgroud)

将传入两个哈希值(解释器无法推断出2个哈希值被分割的位置,如果留给自己,所以你需要给它{}告诉它在这种情况下该做什么)

有关更多信息,请参阅Pickaxe书籍章节:有关在底部收集哈希参数一节中有关方法的更多信息.