gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:20 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com