我想最后得到字符串"/a_setting/c\blah = something"
,其中属性被评估为其值:blah。但是,我看到以下行为,其中前面的反斜杠似乎停止了对变量的评估:
attribute = "blah"
"/a_setting/c\#{attribute} = something"
=> "/a_setting/c\#{attribute} = something"
"/a_setting/c\ #{attribute} = something"
=> "/a_setting/c blah = something"
答案 0 :(得分:2)
获取所需的字符串:
"/a_setting/c\\#{attribute} = something"
你需要用反斜杠来逃避反斜杠。
"\#"
时,"#"
将被转义,并且不会被解释为插值元素,而是被逐字"#"
,在检查中显示为"\#"
在{...}
前面,以避免插值歧义。"\ "
时," "
被(冗余地)转义,并被解释为逐字" "
。 答案 1 :(得分:1)
我不明白你指的是什么。
但是如果你想在字符串中对你的属性进行评估,可能这就是你想要的
"/a_setting/c\\#{attribute} = something"
来自
"/a_setting/c\#{attribute} = something"
您通过添加转义字符#{}
\
转移评估
因此,解释器将评估#{}
而不是表达式。
当您在另一个\
之前添加另一个\
时,下一个\将被转义并评估为普通字符。
"\#{attribute}" #:=> "\{attribute}
"\\#{attribute}" #;=> "\blah"