字符串中的“@”符号导致意外结果
`@` symbol in string causes unexpected results
似乎当 @
符号与 #
符号配对时开始忽略某些字符。它甚至在 %{}
定界符内执行此操作。这是怎么回事?
"1#@ #9"
#=> "1\#@ #9"
"1#@X#9"
#=> "1#9"
"1#@XXX#9"
#=> "1#9"
"1#@X123#9"
#=> "1#9"
"1#\@X123#9"
#=> "1\#@X123#9"
"#"
#=> "#"
"@"
#=> "@"
"\@"
#=> "@"
"@XX"
#=> "@XX"
"1@XX1"
#=> "1@XX1"
"#@XX#"
#=> "#"
@
是Ruby中实例变量的印记,当它跟在#
后面时,表示插值,插值发生。在您的示例中,实例变量 @X
和 @XX
被调用,我想它们没有定义。如果是这样,那么这些变量默认是 nil
,通过 to_s
扩展为空字符串进行插值。当#@
不能解释为插值时(例如@
是无效的实例变量名),则逐字识别为#@
,并在检查时插入转义字符[=19] =]
似乎当 @
符号与 #
符号配对时开始忽略某些字符。它甚至在 %{}
定界符内执行此操作。这是怎么回事?
"1#@ #9"
#=> "1\#@ #9"
"1#@X#9"
#=> "1#9"
"1#@XXX#9"
#=> "1#9"
"1#@X123#9"
#=> "1#9"
"1#\@X123#9"
#=> "1\#@X123#9"
"#"
#=> "#"
"@"
#=> "@"
"\@"
#=> "@"
"@XX"
#=> "@XX"
"1@XX1"
#=> "1@XX1"
"#@XX#"
#=> "#"
@
是Ruby中实例变量的印记,当它跟在#
后面时,表示插值,插值发生。在您的示例中,实例变量 @X
和 @XX
被调用,我想它们没有定义。如果是这样,那么这些变量默认是 nil
,通过 to_s
扩展为空字符串进行插值。当#@
不能解释为插值时(例如@
是无效的实例变量名),则逐字识别为#@
,并在检查时插入转义字符[=19] =]