我有一个包含字符的字符串,如“Pi#$e77L09!($)”。
但是当我尝试在控制台上打印时,它的打印像“Pi!($”
2.1.2 :002 > str = "Pi#$e77L09!($"=> "Pi!($"
2.1.2 :003 > puts str Pi!($ => nil
最佳答案
魔法在 #
中。如您所知,"#{ ruby code }"
执行 block 中的代码并打印它。类似地,# 允许您通过在其前面放置一个散列来访问程序的全局变量,例如 "#$a"
。
所以如果你尝试这段代码。
$a = 'test'
puts "#$a"
你会看到它打印测试。所以在你的情况下,因为 $e77L09
是一个不存在的全局变量,所以它什么都不打印。
如果您想将该字符串作为字符串打印,您需要用单引号将其打印出来。 'Pi#$e77L09!($'
上述“#$1 #$2”的用法在使用正则表达式时非常有用。当一个字符串有多个匹配的正则表达式时,它可以使用 $1、$2、$3 等访问。我相信这些东西来自 Perl 世界(我不是 100% 确定它的历史)。
编辑:就像全局变量一样,也可以访问类和实例变量。
关于ruby-on-rails - ruby 2.1.2 中 "#$e"的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64670316/