问题标签 [pseudo-globals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
234 浏览

ruby - 为什么像 $& 这样的 Ruby 全局字符串会无误地忽略突变?

我正在学习 Ruby (2.0),这让我很惊讶:

slice!方法应该改变字符串。其他 mutator 方法的行为方式相同。我的问题:为什么这不会引发错误,这是我所期望的,当一个函数不能做它说它会做的事情时?这是在某处记录的吗?有道理吗?

更新

所以,我看到它$&不像一个全局变量。对它的每个引用都会给出一个新对象,就好像它真的是一个无参数函数一样:

所以......我的问题变成了:这只是解释器的“魔法”,还是$&实际上是一个无参数函数,就像我可以在 Ruby 中使用def ... end? 而且,我怎么能分辨出来呢?foo在 Python 中,我可以通过使用它的名称来引用一个函数:

有没有办法在 Ruby 中做到这一点?然后我可以看看 $& “真的”是什么(如果它不是魔法的话)。

0 投票
4 回答
1214 浏览

ruby - 在方法定义中使用 $1、$2 等全局变量

给定以下两段代码:


为什么这两段代码的输出不同?有没有办法gsub从方法定义外部传递一个块,以便以与在方法定义内部给出块相同$1$2方式评估变量?

0 投票
3 回答
350 浏览

ruby - 为什么只有有限数量的正则表达式捕获存储在 `global_variables` 中?

如果我用十个捕获的正则表达式进行匹配:

然后,对于$10,我得到:

但它从global_variables. 我得到(在 irb 会话中):

这里只列出前九个:

这也证实了:

存储在哪里$10,为什么不存储在global_variables

0 投票
4 回答
789 浏览

ruby - 如何覆盖`File::SEPARATOR`

文件File.join规定:

join(string, ...)string

返回通过使用 连接字符串形成的新字符串File::SEPARATOR

File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"

但是,下面的结果显示了不同的行为。

有人可以解释发生了什么吗?File::SEPARATOR有没有办法通过设置为另一个值来覆盖这种行为?

我没有具体的用例,也没有寻找解决方法..只是好奇。先感谢您。

0 投票
1 回答
46 浏览

ruby - 如何使用 '$MATCH' 作为 '$&' 的别名

根据this document$MATCH是 的别名$&,我想用它来提高可读性。

但它在我的环境中不起作用。

我有什么误解?

0 投票
2 回答
50 浏览

ruby - gsub 缓存组?

如果我运行此代码:

然后我将值更改为:

答案停留在5.60。然后,如果我再次运行同一行,我得到:

发生了什么?为什么相同的代码运行两次会给出两个答案?gsub缓存东西吗?