gpt4 book ai didi

ruby - 将程序拆分为类并从一个类访问另一个类中的变量

转载 作者:数据小太阳 更新时间:2023-10-29 08:44:29 24 4
gpt4 key购买 nike

我写了一个 tictactoe 程序,我试图将它组织成类。

class Board
attr_accessor :fields

def initialize
self.fields = {
'1' => ' ', '2' => ' ', '3' => ' ',
'4' => ' ', '5' => ' ', '6' => ' ',
'7' => ' ', '8' => ' ', '9' => ' '
}
end
def set_stone_at(position, stone)
fields[position] = stone
end
def stone_at(position)
stone = fields[position]
puts stone
end
def show
puts fields
end
end

class Game
attr_accessor :board

def initialize
self.board = Board.new
end
def print_board
puts "\n #{fields['1']} | #{fields['2']} | #{fields['3']}"
puts " --*---*---"
puts " #{fields['4']} | #{fields['5']} | #{fields['6']}"
puts " --*---*---"
puts " #{fields['7']} | #{fields['8']} | #{fields['9']} \n"
end
end

board = Board.new
board.show
Game.new.board.show
game = Game.new
game.board.set_stone_at('1', 'X')
game.board.set_stone_at('2', 'O')
game.print_board

我无法从类 Game 中的类 Board 访问变量 fields。我收到错误:

in `print_board': undefined local variable or method `fields' for #<Game:0x007ffc1a895710> (NameError)

我将不胜感激任何形式的帮助。我很感激任何帮助和解释。

最佳答案

board.fields 而不是 fields

顺便说一句,你没有变量fields;您在类 Board 上有一个实例方法 fields,它引用变量 @fields

关于ruby - 将程序拆分为类并从一个类访问另一个类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com