字符串插值如何在没有#{..}语法的情况下工作?

时间:2013-11-29 23:51:44

标签: ruby string string-interpolation

以下代码摘自Pickaxe书的第118页。有人可以向我解释为什么我们不需要#{@name}进行插值吗?

class TaxCalculator
  def get_tax(amount)
    "#@name on #{amount} = #{@block.call(amount)}"
  end
end

2 个答案:

答案 0 :(得分:4)

当要插值的表达式只是对全局,实例或类变量的引用时,可以省略大括号。只有更复杂的表达式才需要大括号。

然而,从风格和可读性的角度来看,是否省略括号是一个好主意存在争议。

答案 1 :(得分:2)

这个问题已经有了一个很好的答案:

Why does string interpolation work in Ruby when there are no curly braces?

简而言之:当您使用全局,类或实例变量时,可以省略{}。