0
我想制作一个TicTacToe游戏。我试图定义一个将空白字段更改为'X'
或'O'
的实例方法。通过调用该对象的实例方法更改对象值
class TicTacToe
attr_accessor :fields, :a1, :a2, :a3, :b1, :b2, :b3, :c1, :c2, :c3
def initialize
@a1,@a2,@a3 = " ", " ", " "
@b1,@b2,@b3 = " ", " ", " "
@c1,@c2,@c3 = " ", " ", " "
@fields = {a1: @a1, a2: @a2, a3: @a3, b1: @b1, b2: @b2, b3: @b3, c1: @c1, c2: @c2, c3: @c3}
end
def print_table
p "#{@fields[:c1]}|#{@fields[:c2]}|#{@fields[:c3]}"
p "#{@fields[:b1]}|#{@fields[:b2]}|#{@fields[:b3]}"
p "#{@fields[:a1]}|#{@fields[:a2]}|#{@fields[:a3]}"
p '# # #'
end
end
game = TicTacToe.new
game.print_table #=> fields[:a1] == ' '
def to_x field
field = "Y"
end
p to_x game.fields[:a1] #=> fields[:a1] == 'Y'
game.print_table #=> fields[:a1] == ' '
game.fields[:a1] = "X" #=> fields[:a1] == 'X'
game.print_table #=> fields[:a1] == 'X'
当我传递一个字符串或一个哈希对象时,Ruby会引发一个错误。我想以相反的方式并在对象上调用我的方法:
field[:a1].to_x
我该怎么做?
我也尝试提取类之外的方法,并将对象传递给它,但我无法更改变量值。我猜ruby使得另一个引用同一个对象的对象。
我在做什么错,什么是正确的方法来做到这一点?
_ “我想周围去别的办法” _ - 只是因为错误的? – Stefan
*“红宝石使另一个对象引用相同的对象”* - 这听起来像是对我的矛盾。 – sawa