问候,我刚开始用这本名为Ruby的计算机科学编程基础的noob书开始学习Ruby。我已经练过每章的练习,没有太多的错误,但是我在上一章为tic-tac-toe游戏编写的课程中不断出现这个错误。这是我制作的board.rb类文件:
class Board
BOARD_MAX_INDEX = 2
EMPTY_POS = ' '
def initialize(current_player)
@current_player = current_player
@board = Array.new(BOARD_MAX_INDEX + 1) {
Array.new(BOARD_MAX_INDEX + 1) { EMPTY_POS }
}
end
end
def display
puts "+------+"
for row in 0..BOARD_MAX_INDEX
print "| "
for col in 0..BOARD_MAX_INDEX
s = @board[row][col]
if s == EMPTY_POS
print col + (row * 3) + 1
else
print s
end
print " | "
end
puts "\n+------+"
end
end
该类运行正常,但这是我尝试访问时irb中的错误消息 显示方法调用:
irb(main):004:0> require '/home/nick/board.rb'
=> true
irb(main):005:0> puts "Starting tic-tac-toe..."
Starting tic-tac-toe...
=> nil
irb(main):006:0> players = ['X', 'O']
=> ["X", "O"]
irb(main):007:0> current_player = players[rand(2)]
=> "O"
irb(main):008:0> b = Board.new(current_player)
=> #<Board:0x00000001c64868 @current_player="O", @board=[[" ", " ", " "], [" ", " ", " "], [" ", " ", " "]]>
irb(main):009:0> b.display()
NoMethodError: private method `display' called for #<Board:0x00000001c64868>
from (irb):9
from /usr/bin/irb:12:in `<main>'
为什么我收到此错误,我需要做些什么才能让它显示电路板?
答案 0 :(得分:3)
您应该将display
方法的定义放在类中:
end # of class
def display
...
end
应该是:
def display
...
end
end # of class
希望它有所帮助。