Вы передаете доску новому экземпляру пешки.
class Pawn
attr_reader :board, :location_x, :location_y
def initialize(board)
@board = board
@location_x = nil
@location_y = nil
end
def move(x, y)
if board.get(x, y).nil?
board.set(location_x, location_y, nil)
self.location_x = x
self.location_y = y
board.set(x, y, self)
else
false
end
end
end
> board = Board.new
> pawn = Pawn.new(board)
> pawn.move(0,0)
> board.get(0,0) == pawn
=> true
ЛАТЕКСНЫЙ Компаньон говорит, что flafter
пакет может использоваться, чтобы гарантировать, что плавания никогда не помещаются перед их ссылками. Для использования этого добавьте следующее к преамбуле документа:
\usepackage{flafter}
Примечание, что, согласно этот поток , что flafter
делает, гарантирует, что плавание никогда не появляется перед его положением в ЛАТЕКСНОМ исходном коде.
Это может работать хорошо, если Ваш документ только имеет несколько плаваний. Для документов с большим количеством плаваний размещение становится намного более трудным, и можно найти, что все плавания появляются вместе в конце документа или главы, или можно принять "Слишком многих необработанная floats” ошибка. Я предлагаю читать эта страница и эта страница в британском TEX FAQ для большего количества предложений.