Ruby:数组的未定义方法“to_set”?

Ste*_*rey 2 ruby

我有一大堆字符:

input = ["p", "f", "p", "t" ... "g"]
Run Code Online (Sandbox Code Playgroud)

我试图获取数组的一部分并将其转换为一个集合:

sub = input.slice(0, 4).to_set
Run Code Online (Sandbox Code Playgroud)

但口译员轰炸了:

undefined method `to_set' for ["p", "f", "p", "t"]:Array (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?这段irb代码执行没有问题。

ndn*_*kov 6

Enumerable#to_set方法由 Ruby 的Set. 默认情况下它不是require-d,因此如果您尝试使用它,就会收到错误消息。

但 inirb Set已经是必需的。您可以通过以下方式验证:

require 'set' # => false
Run Code Online (Sandbox Code Playgroud)

这是之前在 irb 中提出的一个问题

  • Ruby 3.2.0 候选版本 1:“Set 现在可以作为内置类使用,无需 require “set”。[功能 #16989] 目前它是通过 Set 常量或调用 Enumerable#to_set 自动加载的。” 。所以只能等到圣诞节了... (2认同)