我正在研究 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/