我什么时候应该在Ruby中使用表达式插值?

时间:2012-07-26 00:07:19

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems

我对在方法中使用表达式插值感到困惑。最初我认为我可以传递任何类型的表达式,比如说name.capitalize,但我也可以通过没有表达式插值。这是两个案例。只需在irb上执行以下两个方法,我对这两个方法都有相同的结果。我使用的是Ruby 1.9.3

1

def say_goodnight(name)
 result = "Good night, " + name.capitalize
 return result
end

puts say_goodnight('uncle')

2

def say_goodnight(name)
  result = "Good night, #{name.capitalize}"
  return result
end

puts say_goodnight('uncle')

两种方式都会产生类似

的输出
Good night, Uncle

所以我的问题是我什么时候应该在Ruby中使用表达式插值?什么时候我应该在Ruby中使用参数?

2 个答案:

答案 0 :(得分:6)

无论哪种读清洁剂通常都更好。例如,如果字符串包含许多变量引用,每个变量引用用几个字符分隔,则表达式的“+”形式可能变得复杂且不清楚,而插值字符串则更明显。另一方面,如果表达式相对复杂,最好将它们与字符串的其他组件分开。

所以,我认为如下:

"Hello #{yourname}, my name is #{myname} and I'm #{mood} to see you."

更清晰
"Hello " + yourname + ", my name is " + myname + " and I'm " + mood + "to see you."

但如果我有复杂的表达式,我可能想将它们分成不同的源代码行,并且那些与“+”更好地连接。

答案 1 :(得分:2)

我使用@ djconnel - 使用哪个读取最好,传达最多信息,简化修改和/或扩展,使调试变得简单等等。

昨天刚刚讨论过;见Strange Ruby Syntax?

在您的具体示例中,我将使用字符串插值,因为该方法实际上只是:

def say_goodnight(name)
  "Good night, #{name.capitalize}"
end