ruby-on-rails - 什么时候应该在 Ruby 中使用表达式插值?

标签 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 中使用参数?

最佳答案

阅读更清晰的通常更好。例如,如果字符串包含多个变量引用,每个变量引用由几个字符分隔,则表达式的“+”形式会变得复杂和不清楚,而内插字符串则更明显。另一方面,如果表达式相对复杂,最好将它们与字符串的其他部分分开。

所以,我认为如下:

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

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

关于ruby-on-rails - 什么时候应该在 Ruby 中使用表达式插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660525/

相关文章:

ruby-on-rails - 将 GET 和 POST 集合路由添加到资源路由

ruby-on-rails - YouTube 数据 API 和 Rails

ruby-on-rails - Spree 可以允许我在我的电子商务应用程序中包含 'Vendors' 吗?

ruby-on-rails - 在 Ubuntu 上新安装 Ruby on Rails,让新应用程序运行时出现问题(TypeError)!

ruby-on-rails - CSS 设计不均匀?

ruby-on-rails - 如何清除Rails应用程序中的搜索结果?

ruby-on-rails - RubyMine 错误 : Unable to run gem 'rails' . 找不到 'rails'

ruby-on-rails - Ruby 2.3.3 : Weird Tempfile. new([name, prefix]) basename converted to hash

ruby - 由于 psych YAML 解析错误,在 mac osx 上安装任何 ruby​​ 1.9.x(带有 rbenv)时遇到问题

ruby-on-rails - 找不到有效的 gem 'mysql2-0.3.18.gem'