我正在做我的第一个程序,一个简单的待办事项列表。我希望它让我输入一个数字,然后从列表中删除相应的项目。
每次,我都不会获得"从零到整数的隐含转换"。我似乎无法解决。有什么想法吗?
$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