gpt4 book ai didi

ruby - 将实例变量设置为 'self' ?

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:30 25 4
gpt4 key购买 nike

我正在用两个类创建 Conway 的生命游戏:Board 和 Cell。

Board 可以访问 Cell,但我不太清楚具体是如何访问的。我不能将 cell.board = self 放在 Cell 的初始化方法下吗?为什么或者为什么不?例如,这是我认为相关的部分。

class Board
#omitted variables & methods

def create_cell
cell = Cell.new
cell.board = self
end
end

class Cell
attr_accessor :board

def initialize
end
end

此外,cell.board = self 究竟做了什么?

最佳答案

您的代码中有错误。您应该使用 cell = Cell.new 而不是 cell = Class.new。是的,您可以将电路板(自身)作为参数传递到 Cell 的构造函数(初始化)中。事实上,那样更干净、更实用。查看这段代码:

class Board
def create_cell
cell = Cell.new(self)
end
end

class Cell
attr_accessor :board

def initialize board
@board = board
end
end

然后是一些使用示例。

$> b = Board.new
# => #<Board:0x000001021c0298>
$> c1 = b.create_cell
# => #<Cell:0x000001021c27a0 @board=#<Board:0x000001021c0298>>
$> c2 = b.create_cell
# => #<Cell:0x000001021d4270 @board=#<Board:0x000001021c0298>>
$> c2.board == c1.board
# => true

如您所见,cell.board = self 或使用 constructor(初始化)将当前板实例设置到创建的单元格中。所以所有这些单元格都将指向该板。

关于ruby - 将实例变量设置为 'self' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264062/

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