2

我对在方法中使用表达式插值感到困惑。最初我以为我可以传递任何类型的表达式,比如让我们说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 中使用参数?

4

2 回答 2

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."

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

于 2012-07-26T00:17:07.510 回答
2

我和@djconnel 在一起——使用读得最好、传达最多信息、简化修改和/或扩展、简化调试等等的任何一个。

这个昨天刚刚讨论过;看到奇怪的 Ruby 语法?

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

def say_goodnight(name)
  "Good night, #{name.capitalize}"
end
于 2012-07-26T00:22:31.253 回答