Ruby 字符串插值运算符

标签 ruby

我正在研究 Ruby,并试图了解 #{} 操作的工作原理。

b = "puts \'Hello World\'"
r = "Testing .... #{b}"

运行此代码时,屏幕上不会打印任何内容。

但是这会打印到屏幕上

b = "puts \'Hello World\'"
r = "Testing .... #{puts 'Hello World'}"

为什么第二个示例打印到屏幕上而第一个没有。

谢谢

最佳答案

字符串插值(#{} 操作)将这些大括号之间的所有内容作为代码求值,并将执行返回的值转换为字符串,并将该字符串放在 #{

在第一个例子中,字符串r包含b,而b只是字符串"puts\'Hello World\'"。在这种情况下,"puts" 没有特殊含义,因为它只是一个字符串。所以在第一种情况下,r 变成:

"Testing .... #{"puts \'Hello World\'"}"

然后变成:

"Testing .... puts \'Hello World\'"

在第二个示例中,您将执行 puts 'Hello World' 的最终值包含在字符串 r 中。因为 puts 返回 nil,所以 r 变成了

"Testing .... #{nil}"

然后变成:

"Testing .... "

关于Ruby 字符串插值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808139/

相关文章:

mysql - 如何使用 JRuby 覆盖 ActiveRecord::Type::Boolean

ruby-on-rails - 在 Rails 中捕获用户输入并在数据库中查询

ruby 散列自动生成(方面)

ruby - 尝试 "git push heroku master"时出错

ruby - 需要一个 gem 库

ruby - 在 Ruby 中从数组的一个点到同一数组的另一个点求和

ruby - Ruby 中的 "Least Surprise"不是什么

ruby-on-rails - 如何在没有 Active Storage 的情况下安装 Action Text?

ruby-on-rails - Rspec: ||= 运算符重复计算代码

ruby-on-rails - 如何在 elasticsearch-rails 中创建实例方法的索引?