ruby-on-rails - ruby 2.1.2 中 "#$e"的含义是什么

标签 ruby-on-rails ruby ruby-2.1

我有一个包含字符的字符串,如“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/

相关文章:

ruby-on-rails - Rails 在模型问题中包含模块

php - Ruby On Rails 服务容器

ruby-on-rails - Backbone.js + Rails 3.1 : How to create CMS within Admin namespace?

php - 如何在 rails 中创建图像? (来自 php 中的 imagecreate())

ruby - 安装 JSON gem 的 native 扩展错误

带 erubis 模板引擎的 Ruby 2.1

ruby - 无法使用 ruby​​ 2.1.2 构建 native 扩展

ruby - Rails 4 表单远程更新 div 问题

ruby - logstash elasticsearch输出

ruby - 如何为类方法动态定义别名方法?