给出以下Ruby代码:
my_array = %w(one two three)
logger.info "Backtrace:\n#{my_array.join("\n")}"
预期产出:
Backtrace:
one
two
three
是否有必要逃避双引号"\n"
或导致相反的效果?
答案 0 :(得分:2)
不,#{...}
里面的双引号字符串(或其他引用的字符串,其行为类似于双引号字符串)只是Ruby,所以#{...}
中的双引号字符串只是普通的旧双引用字符串。特别是:
s = "#{"\n"}"
会将一个换行符放入s
。
答案 1 :(得分:1)
我建议使用irb
尝试这样的短代码段落,它可以即时读取和解释Ruby代码。
关于你的问题:
my_array = %w(one two three)
logger.info "Backtrace:\n#{my_array.join("\n")}"
是正确的语法,并且:
my_array = %w(one two three)
logger.info "Backtrace:\n#{my_array.join(\"\n\")}"
不起作用。 <{1}}导致内部的所有内容被视为普通的Ruby表达式而无需特殊的转义。