"no implicit conversion from nil to integer"



我正在做我的第一个程序,一个简单的待办事项列表。我希望它让我输入一个数字,然后从列表中删除相应的项目。

每次,我都不会获得"从零到整数的隐含转换"。我似乎无法解决。有什么想法吗?

$list = Array.new
def mainmethod
  puts "Enter new item, or type 'view' to view the list, 'delete' to delete items"
  input = gets.chomp
  if input.downcase == "view"
    puts "Your to do list is as follows:"
    puts $list
  elsif input.downcase == "delete"
    puts "Which item would you like to delete? (Enter a number)"
    deletenumber = gets.chomp.to_i
    deletenumber-=1
    delete_list = [deletenumber]
    delete_list.each do |del|
      $list.delete_at($list.index(del))
    end
  else
    $list << input
    puts "Added to list!"
  end
end
loop { mainmethod }

请参阅http://www.ruby-doc.org/core-1.9.3/array.html#method-i-delete_at,以使用 Array#delete_at的正确方法。

您要做的就是将#index调用,其中数组不包含一个数字。因此,$list.index(del)将返回nil,呼叫#delete_at将失败。

您需要做的是$list.delete_at(del)

错误TypeError: no implicit conversion from nil to integer尝试使用nil作为索引访问数组的元素时发生的错误。在您的情况下,delete_at似乎正在通过:

[ 1, 2, 3 ].delete_at(nil)
# => TypeError: no implicit conversion from nil to integer

最新更新