Я новичок в Ruby и программирую игру, в которой есть класс с именем Player, и у меня возникают проблемы при попытке скопировать объект.Мой код выглядит примерно так:
class Player
attr_accessor :imprisoned
attr_reader :name
attr_reader :balance
attr_accessor :freedom_card
attr_accessor :current_box
attr_reader :properties
# Default constructor with no parameters
def initialize (name = "")
@name = name
@imprisoned = false
@balance = 7500
@properties = Array.new
@freedom_card = nil
@current_box = nil
end
# Constructor with one parameter (it works)
def self.nuevo (name)
self.new(name)
end
# Copy constructor (doesn't seem to work)
def self.copia (other_player)
@name = other_player.name
@imprisoned = other_player.imprisoned
@balance = other_player.balance
@properties = other_player.properties
@freedom_card = other_player.freedom_card
@current_box = other_player.current_box
self
end
# ...
end
При тестировании с этим:
player = Player.nuevo ("John")
puts player.name
player_2 = Player.copia(player)
puts player_2.name
я получаю это:
John
NoMethodError: undefined method `name' for ModeloQytetet::Player:Class
В чем может быть ошибка?Он также не работает при использовании других атрибутов или методов из скопированного объекта, но все отлично работает в исходном.Заранее спасибо и прошу прощения за любые ошибки в английском (не мой родной язык).