Было бы неплохо, если бы я мог сделать это в Ruby?Инициализация круговых объектов в Ruby
class Type
attr_accessor :weak_against, :strong_against
def initialize(weak_against, strong_against)
@weak_against = weak_against
@strong_against = strong_against
end
end
Fire = Type.new([Water], [Grass])
Water = Type.new([Grass], [Fire])
Grass = Type.new([Fire], [Water])
Но я не могу.
=> type.rb:10:in `<main>': uninitialized constant Water (NameError)
Кто-нибудь знает работу?
Использование 'type' в качестве имени класса будет очень, ужасно, путая при обсуждении кода. Классы должны представлять объект, вещь, а не атрибут вещи, и должны быть названы соответственно. Что-то вроде «Элемента» может применяться, поскольку вода и огонь являются элементами. Трава - это выброс, но вы можете видеть эту идею. –