ruby 2.7.0 文档声称有 String '/' 方法,但它似乎不存在

Dav*_*lar 5 ruby

从:

https://ruby-doc.org/core-2.7.0/String.html#method-i-2F

看起来我们可以执行以下任一操作来进行拆分:

got = str.split(',')
got = str/','
Run Code Online (Sandbox Code Playgroud)

但第二个似乎不起作用(“./”或“./(ch)”等也不起作用),而是给出了一种未找到的方法(MRI 2.7.0)

事实上,当我这样做时,我什么也没得到:

 puts String.methods.index(:/)
Run Code Online (Sandbox Code Playgroud)

(虽然现在我已经在 Integer 上尝试过了,但我发现它也没有出现在那里)

这是文档中的错误吗?

mat*_*att 1

这看起来像是 ruby​​-doc.org 上的文档的问题。

\n

/别名从来String#split没有(据我所知)是常规的一部分String,但它是golf_prelude.rb.

\n

golf_prelude.rb是用于代码高尔夫的 Ruby 特殊版本的一部分。您可以\xe2\x80\x99t 只是require \'golf_prelude\'为了使用它,但您需要制作一个包含它的特殊构建。

\n

的文档String#/出现在 ruby​​-doc.org 到 Ruby 3.1.0中,但 \xe2\x80\x99t 出现在3.1.1及以后版本中。golf_prelude.rb3.1.0 之前的版本中还记录了其他方法,例如Object#hSymbol#callInteger#each,尽管它们实际上并不存在于普通 Ruby 中,并且已从 3.1.1 文档中删除。

\n

如果您查看这些类文档的 \xe2\x80\x9cIn Files\xe2\x80\x9d 部分(位于页面左上角),您将看到 3.1.0 版本全部列出,而 3.1.1 版本则全部列出golf_prelude.rb。版本不\xe2\x80\x99t。

\n

这两个版本之间的 Ruby 源似乎没有任何更改来解释文档中的差异(至少我找不到)。我的假设是 ruby​​-doc.org 的维护者注意到他们在生成站点时错误地包含了此文件,并更改了构建脚本以排除它。

\n
\n

(虽然现在我已经在 Integer 上尝试过了,但我发现它也没有出现在那里)

\n
\n

StringInteger作为类,都没有/方法(即使在高尔夫版本中),但的实例Integer(但不是String\xe2\x80\x93 ,除非打高尔夫球)可以:

\n
String.instance_methods.index(:/)\n=> nil\nInteger.instance_methods.index(:/)\n=> 32\n
Run Code Online (Sandbox Code Playgroud)\n