繁体   English   中英

ruby 2.1.2中“#$e”是什么意思

[英]what is the meaning of "#$e" in ruby 2.1.2

我有一个包含字符的字符串,如“Pi#$e77L09!($”。

但是当我试图在控制台上打印时,它的打印结果是“Pi!($”

2.1.2 :002 > str = "Pi#$e77L09!($" => "Pi!($"

2.1.2 :003 > puts str Pi!($ => nil

魔法在# 如您所知, "#{ ruby code }"执行块中的代码并打印它。 同样, # 允许您通过在程序前面放置一个哈希来访问程序的全局变量,就像"#$a"

所以如果你试试这个代码。

$a = 'test'
puts "#$a"

你会看到它打印测试。 所以在你的情况下,因为$e77L09是一个不存在的全局变量,它什么都不打印。

如果您想将该字符串打印为字符串,则需要将其打印在单引号中。 'Pi#$e77L09!($'

当您使用正则表达式时,上述“#$1 #$2”的用法非常有用。 当一个字符串有多个匹配的正则表达式时,可以使用 $1、$2、$3 等来访问它。我相信这些东西来自 Perl 世界(我不是 100% 确定它的历史)。

编辑:像全局变量一样支持类和实例变量也可以访问。

尝试放置 'Pi#$e77L09!($'

'#' 是 ruby​​ 中用于字符串插值的特殊字符。

如果您使用 'Pi#$e77L09!($' 它会在 '#' 之前添加 \\ String Literals

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM