这个Ruby片段中的语法错误在哪里?

pat*_*boy -1 ruby prawn ruby-on-rails-3

拉出我的头发......

Prawn::Document.generate(@targetfile) do |pdf|

  pdf.bounding_box ([80, 510] , :width => 400) do

    pdf.text("hello")

  end

end
Run Code Online (Sandbox Code Playgroud)

在之前的"逗号"中给出语法错误,意外的',',期待')' :width => 400

我用Ruby 1.9.3和2.1试过这个 - 都给出了同样的错误.我改变的唯一另一件事是我将虾版本从1.0升级到2.0 - 根据手册使用这样的大虾应该仍然可以.

Eug*_*e G 8

同意安德鲁的回答.在ruby中使用函数调用时,可以使用没有括号的空格,也可以使用括号和空格,但不能同时使用两者.所以:

pdf.bounding_box([80, 510] , :width => 400) 没关系

pdf.bounding_box [80, 510] , :width => 400 也行

但你不能做空格和括号.现在在你的情况下,因为你想把它的结果链接到一个do/end块,你将不得不使用括号,所以选项1是唯一的方法.

  • 为了澄清原因,`Math.sqrt(1 + 3)*4`是'8.0`(`Math.sqrt(1 + 3))*4`); 但是`Math.sqrt(1 + 3)*4`是`4.0`(`Math.sqrt((1 + 3)*4)`).当你写`pdf.bounding_box(x,y)`.但是,`,`不是Ruby中的运算符,所以`(1,3)`(当不在函数调用之类的特殊上下文中时)是`SyntaxError`. (2认同)