为什么空格会影响ruby函数调用?
我在这段代码中遇到语法错误
render json: { "what" => "created", "whatCreated" => "thing", "htmlOutput" => render_to_string (partial: "some_partial") }
但是使用这段代码我不会:
render json: { "what" => "created", "whatCreated" => "thing", "htmlOutput" => render_to_string(partial: "some_partial") }
render_to_string
之后如何破坏我的rails应用程序?
问题是,ruby中的方法可以使用或不使用括号来运行。 例如,您可以运行Array.new 1,2
并且ruby知道它在空格后接收参数。 你也可以运行Array.new(1,2)
,ruby知道args在括号内。
但是,当你运行Array.new (1,2)
,ruby认为它将在空格后接收参数,但实际上它接收一个元组(1,2)
,并且基本上它与Array.new完全相同Array.new((1,2))
所以底线:
Array.new (1,2)
== Array.new((1,2))
,这就是语法错误,因为(1, 2)
文字不是有效的
作为一般的Ruby样式指南,您不应在参数列表括号前添加空格。 这与rails无关,而与Ruby语言无关。 尝试以下内容:
Array.new(1,2) # => [2] Array.new (1,2) # = > SyntaxError: unexpected ',', expecting ')' Array.new(1) # => [nil] Array.new (1) # => [nil]
正如你在第二个例子中看到的那样,代码坏了,解释器期望找到a )
但是找到了,
。 但是在最后一个例子中它没有破坏。