Ruby报错:数组无to_set方法?为何irb可执行脚本不行?
问题原因与解决办法
原因
to_set并不是Ruby数组(Array)的原生方法,这个方法是Ruby标准库中的set模块给Array类添加的扩展方法。
在irb环境中,Ruby会自动预加载一些常用的标准库(包括set),所以你能直接调用to_set;但在普通的Ruby脚本文件中,默认不会自动加载set库,因此会触发NoMethodError错误。
解决办法
有两种方式可以解决这个问题:
- 在脚本开头手动引入
set库:require 'set' input = ["p", "f", "p", "t", "g"] sub = input.slice(0, 4).to_set - 不依赖扩展方法,直接使用
Set类的构造方法转换数组:input = ["p", "f", "p", "t", "g"] sub = Set.new(input.slice(0, 4))
内容的提问来源于stack exchange,提问作者Steed-Asprey
相关产品推荐
相关产品推荐

