0

我想得到"/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"

4

2 回答 2

2

要获取您想要的字符串:

"/a_setting/c\\#{attribute} = something"

您需要通过反斜杠转义反斜杠。

  • 当你这样做"\#"时,"#"被转义,并且不被解释为插值元素,而是被解释为逐字"#"的,在检查中,它出现"\#"在前面,{...}以避免与插值产生歧义。
  • 当您这样做"\ "时," "( 冗余地) 转义了,并被解释为 verbatim " "
于 2013-07-15T09:35:39.647 回答
1

我不明白你指的是什么。

但是,如果您试图在字符串中评估您的属性,这可能就是您想要的

"/a_setting/c\\#{attribute} = something"

因为

 "/a_setting/c\#{attribute} = something"

#{}通过添加转义字符来逃避评估\

所以解释器将评估#{}而不是作为一个表达式。

当您在另一个\之前添加另一个时\,下一个 \ 将被转义并评估为普通字符。

"\#{attribute}" #:=> "\{attribute}
 "\\#{attribute}" #;=> "\blah"
于 2013-07-15T09:41:12.827 回答