Ruby 未定义的方法`拆分';对于nil:数组的NilClass(NoMethodError)

Ruby 未定义的方法`拆分';对于nil:数组的NilClass(NoMethodError),ruby,file-io,Ruby,File Io,我试图读取一个包含一些数字的文件。然后我想把它们转换成整数。当我像下面这样尝试时,它是好的 input = IO.readlines(filename) size = input[0].split(/\s/).map(&:to_i) 但是,当我像下面这样尝试时,它给了我那个错误 input = IO.readlines(filename) lnth = input.length i=0 while i<=lnth size = input[i].split(/\s/).map

我试图读取一个包含一些数字的文件。然后我想把它们转换成整数。当我像下面这样尝试时,它是好的

input = IO.readlines(filename)
size = input[0].split(/\s/).map(&:to_i)
但是,当我像下面这样尝试时,它给了我那个错误

input = IO.readlines(filename)
lnth = input.length
i=0
while i<=lnth
  size = input[i].split(/\s/).map(&:to_i)
  i=i+1
end
input=IO.readlines(文件名)
lnth=输入长度
i=0

当我显然
当我我想知道这应该做什么

size = line.split(/\s/).map(&:to_i)
它将拆分类似“321 123 432”的字符串,并返回类似[321,123,432]的数组。 此外,变量
size
在每一轮上都会再次初始化

忽略这一点,这里有一个更像Ruby的版本:

File.readlines(filename).each do |line|
  size = line.split(/\s/).map(&:to_i)
end

在Ruby中,通常不会对item_count.中的i使用
之类的东西,而我会在拆分前将其转换为字符串,即
input[i]。to_.split(/\s/)

可能是
input[i]
nil
,因此将其转换为字符串

这应该可以做到:

def nil.split *args
  nil # splitting of nil, in any imaginable way, can only result again in nil
end

结果是
i==input.length
,但是
input[input.length]
不存在(它是
nil
),因此会出现错误。在我输入时尝试输入
,尽管你可以只输入
。每个
@DaniëlKnippers完美的答案(也是第一个答案),为什么要在评论中?作为答案发布。@DaniëlKnippers非常感谢您。它起作用了D@ArupRakshit我想你是对的,我通常会对索引越界之类的小错误发表评论,但我想我应该只回答:)因为改变了
@DaniëlKnippers的开发者网站而获得声誉感觉有点傻,所以在你消除其他开发者的痛苦的同时,获得一些代表是值得的。。即使它是最小的一个。因为有时修复这些错误需要更多的时间。。所以你节省了时间…非常感谢你的建议。我是ruby的新手。所以这对我有很大帮助。我会听从你的建议。
File.readlines(filename).each do |line|
  size = line.split(/\s/).map(&:to_i)
end
def nil.split *args
  nil # splitting of nil, in any imaginable way, can only result again in nil
end