0

抱歉英语不好。为什么Ruby引用如此奇怪?或者这可能是一个错误?

irb(main):027:0> p eval "\"    \+     \\+    \\\+     \\\\+    \\\\\+    \"" 

生产

=> "    +     +    +     \\+    \\+    "

或者

irb(main):027:0> puts eval "\"    \+     \\+    \\\+     \\\\+    \\\\\+    \""   

生产

=> +     +    +     \+    \+

或另一个例子

irb(main):067:0> "  \"  " =~ Regexp.new(eval("\"  \\\"  \""))   
=> 0

irb(main):068:0> "  +  " =~ Regexp.new(eval("\"  \\\\+  \""))   
=> 0
4

2 回答 2

2

当你写\" \+ \\+ \\\+ \\\\+ \"你得到" + \+ \+ \\+ ". 之后,您使用eval执行此字符串,其中包含另一个双引号字符串。你得到,然后,+ + + \+

\\=> \
\x=> x(se não for nenhum caso especial, como \n)

于 2011-01-18T19:01:59.870 回答
0

红宝石转义非常好,

eval = 评估/执行字符串

于 2011-01-18T19:05:46.153 回答