问题标签 [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.
ruby - 为什么像 $& 这样的 Ruby 全局字符串会无误地忽略突变?
我正在学习 Ruby (2.0),这让我很惊讶:
该slice!
方法应该改变字符串。其他 mutator 方法的行为方式相同。我的问题:为什么这不会引发错误,这是我所期望的,当一个函数不能做它说它会做的事情时?这是在某处记录的吗?有道理吗?
更新
所以,我看到它$&
不像一个全局变量。对它的每个引用都会给出一个新对象,就好像它真的是一个无参数函数一样:
所以......我的问题变成了:这只是解释器的“魔法”,还是$&
实际上是一个无参数函数,就像我可以在 Ruby 中使用def ... end
? 而且,我怎么能分辨出来呢?foo
在 Python 中,我可以通过使用它的名称来引用一个函数:
有没有办法在 Ruby 中做到这一点?然后我可以看看 $& “真的”是什么(如果它不是魔法的话)。
ruby - 在方法定义中使用 $1、$2 等全局变量
给定以下两段代码:
为什么这两段代码的输出不同?有没有办法gsub
从方法定义外部传递一个块,以便以与在方法定义内部给出块相同$1
的$2
方式评估变量?
ruby - 为什么只有有限数量的正则表达式捕获存储在 `global_variables` 中?
如果我用十个捕获的正则表达式进行匹配:
然后,对于$10
,我得到:
但它从global_variables
. 我得到(在 irb 会话中):
这里只列出前九个:
这也证实了:
存储在哪里$10
,为什么不存储在global_variables
?
ruby - 如何覆盖`File::SEPARATOR`
文件File.join
规定:
join(string, ...)
→string
返回通过使用 连接字符串形成的新字符串
File::SEPARATOR
。
File.join("usr", "mail", "gumby") #=> "usr/mail/gumby"
但是,下面的结果显示了不同的行为。
有人可以解释发生了什么吗?File::SEPARATOR
有没有办法通过设置为另一个值来覆盖这种行为?
我没有具体的用例,也没有寻找解决方法..只是好奇。先感谢您。
ruby - gsub 缓存组?
如果我运行此代码:
然后我将值更改为:
答案停留在5.60
。然后,如果我再次运行同一行,我得到:
发生了什么?为什么相同的代码运行两次会给出两个答案?gsub
缓存东西吗?