"123 456 789" eval('123 #{456.to_s} 789') # => 123 如-6ren">
gpt4 book ai didi

Ruby:使用字符串插值进行评估

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:24 25 4
gpt4 key购买 nike

我不明白,为什么 eval 会这样工作:

"123 #{456.to_s} 789" # => "123 456 789"
eval('123 #{456.to_s} 789') # => 123

如何在 eval 中插入字符串?

更新:

谢谢 friend 们。有效。

因此,如果您有一个带有 #{} 的字符串变量,您希望稍后对其进行评估,您应该按照以下说明进行操作:

string = '123 #{456} 789' 
eval("\"" + string + "\"")
# => 123 456 789

string = '123 #{456} 789' 
eval('"' + string + '"')
# => 123 456 789

最佳答案

发生了什么事,eval 正在评估字符串作为源代码。当你使用双引号时,字符串被插入

eval '"123 #{456.to_s} 789"'
# => "123 456 789"

但是当你使用单引号时,没有插值,因此 # 开始注释,你得到

123 #{456.to_s} 789
# => 123

字符串插值发生在 eval 调用之前,因为它是方法的参数。

另请注意,456.to_s 是不必要的,您可以只执行 #{456}

关于Ruby:使用字符串插值进行评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17169671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com