gpt4 book ai didi

ruby - 在 Ruby 中,shell 单行代码中的 sub、gsub(和其他文本方法)如何在不引用对象的情况下工作?

转载 作者:数据小太阳 更新时间:2023-10-29 08:27:54 27 4
gpt4 key购买 nike

我在网上某处看到了这段代码:

ruby -pe 'gsub /^\s*|\s*$/, ""'

显然,这段代码从 STDIN 的每一行中删除了前导和尾随空格。

我理解正则表达式和替换,没问题,但我不明白方法 gsub 是如何接收要执行的对象的。我知道 -p 标志将整个内容包装在 while gets;打印; ...; end block ,但是gsub 是如何接收要执行的字符串 的?至少,它不应该是 $_.gsub(..) 吗?当前输入行如何“神奇地”传递给 gsub

这些类似 Perl 的单行代码中的代码是否以某种不同的方式被解释?我正在寻找与传统的、基于脚本的 Ruby 代码的区别的一般概念。恐怕还没有找到一套全面的资源。

最佳答案

事实证明,这是在内核上定义的一个实例方法,只有当您使用 -p 或 -n 标志时,它才会神奇地打开。

ruby -pe 'puts method(:gsub);'

#<Method: Object(Kernel)#gsub>

参见文档 here .

我发现的其他神奇方法是chopprintsub

神奇的方法都隐含地发送到$_

关于ruby - 在 Ruby 中,shell 单行代码中的 sub、gsub(和其他文本方法)如何在不引用对象的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295528/

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