我写了一个小的演示代码,向您展示我的问题:
puts "Enter your feeling"
a = gets.chomp
@feel = "good"
puts a
所以当涉及到输入时,我输入:
Actually i fell very #{@feel}
然后我希望得到这个输出:
Actually i fell very good
但我得到了这个输出:
Actually i fell very #{@feel}
我做错了什么?
答案 0 :(得分:0)
而不是
puts a
应该是
puts "Actually i feel very " + @feel
答案 1 :(得分:0)
“#{@感觉}”
可能是您需要的感觉。
并尝试遵循命名约定。
答案 2 :(得分:0)
简单的答案是你不能。
插值发生在运行时,所以即使你可以让它工作,@ ifel在你输入时也是零。
你会做得更好:
puts "Enter your feeling"
a = gets.chomp
@feel = "good"
puts a.gsub("##feel##",@feel)
然后问你感觉如何进入:
Actually I feel very ##feel##
答案 3 :(得分:0)
老实说,从用户插入任意字符串并不太安全。基本上它与使用Kernel#eval(在您的情况下将起作用)相同......用户可以放置他们想要的任何内容,并且非常容易滥用和破坏您的系统。你可以通过简单地在他们输入的内容中过滤引号来做一点技巧,但老实说这是一个糟糕的选择。
如果#{@feel}
是您允许他们插入的唯一内容,那么您可以使用@feel
对@feel
进行字符串替换:
puts a.gsub('#{@feel}',@feel)