Ruby 中的未定义方法 []
Undefined method [] in Ruby
我是 运行 Ruby 2.2.2 Windows 7 Professional。我正在尝试制作一个菜单程序,将多个菜单存储在一个数组中。我以为我已经成功了,但是我得到了错误信息
Menu.rb:7:in 'block in load':undefined method '[]' for nil:NilClass (NoMethodError)
这是我的代码:
#-Functions-#
def load(page)
data = [["menu","Menu",[["obj1","Object 1",false],["exit","Exit",true]]],["obj1","Object 1",[["menu","Back",false],["exit","Exit",true]]],["exit","Exit",false]]
itemNum = 0
data.each do
pageData = data[itemNum]
if pageData[0] == page #ErrorLine
if pageData[2] == false
send(page)
else
system "cls"
puts
puts " #{pageData[1]}"
puts
itemNum = 1
pageData[2].each do
puts
puts " #{itemNum}. #{pageData[2][itemNum-1][1]}"
itemNum += 1
end
puts
puts
print " Choice: "
choice = gets.chomp.to_i
load(pageData[choice-1][0])
end
end
itemNum +=1
end
end
def exit
exit
end
#-Program-#
load("menu")
你的数据数组设置了 3 个元素,但是如果你记录你的程序,
在每个循环结束时试试这个
data.each do
...
itemNum +=1
puts "itemNum is now #{itemNum}"
end
运行 它,你会在某个时候看到它 "itemNum is now 4"。
因此在第 7 行 pageData 为 nil,因为 data[4] 元素不存在。
我是 运行 Ruby 2.2.2 Windows 7 Professional。我正在尝试制作一个菜单程序,将多个菜单存储在一个数组中。我以为我已经成功了,但是我得到了错误信息
Menu.rb:7:in 'block in load':undefined method '[]' for nil:NilClass (NoMethodError)
这是我的代码:
#-Functions-#
def load(page)
data = [["menu","Menu",[["obj1","Object 1",false],["exit","Exit",true]]],["obj1","Object 1",[["menu","Back",false],["exit","Exit",true]]],["exit","Exit",false]]
itemNum = 0
data.each do
pageData = data[itemNum]
if pageData[0] == page #ErrorLine
if pageData[2] == false
send(page)
else
system "cls"
puts
puts " #{pageData[1]}"
puts
itemNum = 1
pageData[2].each do
puts
puts " #{itemNum}. #{pageData[2][itemNum-1][1]}"
itemNum += 1
end
puts
puts
print " Choice: "
choice = gets.chomp.to_i
load(pageData[choice-1][0])
end
end
itemNum +=1
end
end
def exit
exit
end
#-Program-#
load("menu")
你的数据数组设置了 3 个元素,但是如果你记录你的程序, 在每个循环结束时试试这个
data.each do
...
itemNum +=1
puts "itemNum is now #{itemNum}"
end
运行 它,你会在某个时候看到它 "itemNum is now 4"。 因此在第 7 行 pageData 为 nil,因为 data[4] 元素不存在。