ruby - "$,"在 ruby 中是什么意思?

标签 ruby

我在 Rails 源代码中偶然发现了这段代码:

# File actionpack/lib/action_view/helpers/output_safety_helper.rb, line 30
def safe_join(array, sep=$,)
  sep ||= "".html_safe
  sep = ERB::Util.html_escape(sep)

  array.map { |i| ERB::Util.html_escape(i) }.join(sep).html_safe
end

$, 有什么作用?我读了Regexp-documentation但我找不到任何相关信息。

最佳答案

系统变量的官方文档在:

http://www.ruby-doc.org/stdlib-2.0/libdoc/English/rdoc/English.html

许多 Ruby 的特殊变量都可以通过各种模块和类中的方法访问,这隐藏了变量是包含值的事实。例如,lineno ,在 IO 中可用并由 File 继承,是 IO 流读取的最后一行的行号。它依赖于 $/$.

“英语”模块提供了隐含变量的长版本,使其更具可读性。隐变量的使用在 Ruby 中不像在 Perl 中那样惯用,这就是为什么当您遇到它们时它们会更好奇。

它们的来源多种多样:大多数(如果不是全部的话)直接来自 Perl,但 Perl 从 sed、awk 和其他厨房水槽代码集合中继承了它们。 (这是一种很棒的语言,真的。)

还有其他由类设置的变量,如 Regexp ,它定义了匹配前和匹配后的变量,以及捕获。这是来自文档:

$~ is equivalent to ::last_match;
$& contains the complete matched text;
$` contains string before match;
$' contains string after match;
$1, $2 and so on contain text matching first, second, etc capture group;
$+ contains last capture group.

虽然 Ruby 定义了简短、隐秘的变量版本,但建议我们使用 require "English" 来提供长名称。它具有可读性,可以转化为长期易于维护的东西。

关于ruby - "$,"在 ruby 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817589/

相关文章:

ruby - 编写更好的 Ruby : How to cast a objects to false or true?

ruby-on-rails - Ruby 未定义方法 `strftime' 为 nil :NilClass

ruby-on-rails - Rails 4 Searchkick 建议错误

ruby-on-rails - Rails 无法识别从 Ruby 脚本发布的参数

ruby - 用 Ruby 将字符串中的元音大写

Ruby 模块前置 vs 派生

javascript - Selenium webdriver 如何使用 ng-click ="upload(' 文件上传文件')”

ruby-on-rails - 共享主机上的 Rails 应用程序?

ruby-on-rails - 在 Rails 应用程序中使用 Active Directory/LDAP 组获取权限\角色的示例

ruby-on-rails - 尝试解析 XLS 文件时出现 "OLE2 signature is invalid"