【问题标题】:Where is the syntax error in this Ruby snippet?此 Ruby 代码段中的语法错误在哪里?
【发布时间】:2015-08-03 03:48:12
【问题描述】:

拔掉我的头发……

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

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

    pdf.text("hello")

  end

end

:width => 400

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

【问题讨论】:

  • 提示:width:400 具有相同的效果,并且更易于输入(并且可以说是阅读)。

标签: ruby ruby-on-rails-3 prawn


【解决方案1】:

同意安德鲁上面的回答。在 ruby​​ 中使用函数调用时,您可以有一个没有括号的空格,也可以有一个括号但没有空格,但不能同时使用。所以:

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

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

但是你不能做空格和括号。现在在您的情况下,由于您想将此结果链接到 do/end 块,因此您必须使用括号,因此选项 1 是唯一的方法。

【讨论】:

  • 为了澄清原因,Math.sqrt(1+3) * 48.0 (Math.sqrt(1+3)) * 4);但Math.sqrt (1 + 3) * 44.0 (Math.sqrt((1 + 3) * 4))。当你写pdf.bounding_box (x, y)。但是,, 不是 Ruby 中的运算符,因此 (1, 3)(当不在函数调用等特殊上下文之一中时)是 SyntaxError
【解决方案2】:

这是因为bounding_box 和括号之间的空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2023-03-30
    • 2014-12-15
    • 2017-06-17
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多