gpt4 book ai didi

javascript - Ruby 在重复函数时尝试存储数组元素

转载 作者:行者123 更新时间:2023-12-02 14:05:03 24 4
gpt4 key购买 nike

我正在尝试制作井字游戏。我很清楚该去哪里,我知道问题是什么,但我不知道如何解决它。当我创建一个函数时,我为该函数建立变量。 i = 0, row1 = [],但是当我重复这些函数时,每次再次调用该函数时,row1 都会回到空,因为最初的 row1 = [],而我想要使用的计数器 i = 0,每次都会回到 0,因为在函数的开头我正在设置变量。我认为解决方案可能是使变量成为全局变量,并将其设置在函数之外,但我不确定如何做到这一点。但如果有人有任何建议,我们将不胜感激。这是问题代码。

def row1(player)
row1 = []
row1[player - 1] = "X"

puts "#{row1}"

end

def choosespot_x

puts "X -- Choose a spot"
move = gets.chomp.to_i
if move <= 3
row1(move)
end

choosespot_x

end

最佳答案

全局变量的前缀是 $在 Ruby 中通常是个坏主意。

实例变量,前缀为@ ,也可以做你想做的事;在顶层,它们的行为与全局变量几乎相同,但在类或模块中它们很好地隔离。

所以最好的办法就是开一个类;在 @row1 中创建变量(例如 initialize )方法,然后你就可以在 choosespot_x 中使用它方法。

编辑:我会这样做的方式......

module TicTacToe
class Board
def initialize
@board = Array.new(9)
end

def [](y, x)
@board[x + y * 3 - 4]
end

def []=(y, x, value)
@board[x + y * 3 - 4] = value
end
end
end

board = TicTacToe::Board.new
board[1, 3] = :white
board[3, 2] = :black
board[1, 3]
# => :white
board[1, 1]
# => nil

关于javascript - Ruby 在重复函数时尝试存储数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40122250/

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