繁体   English   中英

nil的未定义方法`split':数组的NilClass(NoMethodError)

[英]undefined method `split' for nil:NilClass (NoMethodError) for an array

我正在尝试读取包含一些数字的文件。 然后我想将它们转换为整数。 当我在下面尝试时,没关系。

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

nil的未定义方法`split':NilClass(NoMethodError)

我现在如何解决错误?

我想知道这应该做什么?

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中,你通常不会for i in item_count ..或者while i<item_count使用类似for i in item_count ..东西for i in item_count ..因为我们有像.each这样的枚举器。

显然, while i<lnth不是<=

while i<lnth
  size = input[i].split(/\s/).map(&:to_i)
  i=i+1
end

但最好使用:

size = line.split(/\s/).map(&:to_i)

在拆分之前将其转换为字符串,即input[i].to_s.split(/\\s/)

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

REF

这应该这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM