Ruby字符串前置'\'字符

RKP*_*RKP 0 ruby string ruby-2.0

当我试图在代码下面运行时,为什么ruby是pre'nds'\'字符.只有'#$'才会发生这种情况

它发生在所有ruby版本中.

puts '#$'   => '\#$'
Run Code Online (Sandbox Code Playgroud)

要么

'#$'  => '\#$'
Run Code Online (Sandbox Code Playgroud)

要么

'mypassord#$123'  =>  'mypassord\#$123'
Run Code Online (Sandbox Code Playgroud)

请在这里分享您的经验.这是红宝石问题还是其他什么?

saw*_*awa 5

不,这不是红宝石问题.这是你的问题.由于#$foo可以解释为全局变量的插值$foo,因此有必要转义#字符.这就是反斜杠的原因.

更确切地说,不可能使用字符串进行插值"#$"($是一个无效的全局变量)或"#$123"($123是一个无效的全局变量),但它使检查算法或插值算法复杂化后检查序列#$,所以我猜这就是为什么#即使在这种情况下逃脱的原因.