Сначала установите «y_support», введя gem install y_support
в командной строке.Тогда, в IRB:
require 'y_support/name_magic'
class Animal
include NameMagic
end # You have created a new class
Animal.name #=> "Animal" -- the class is named Animal
class Dog < Animal
def speak; puts "Bow wow!" end
end #=> hereby, you have created a subclass of Animal class
Cat = Class.new(Animal) do
def speak; puts "Meow!" end
end #=> this is another way of creating a subclass
Dog.name #=> "Dog" -- this is a class named Dog
А теперь
Fido = Dog.new #=> You have created a new Dog instance
Dog.instance_names #=> [:Fido] -- the instance is named Fido
Stripes = Cat.new #=> You have created a new Cat instance
Cat.instance_names #=> [:Stripes] -- the instance is named Cat
Animal.instances.size #=> 2 -- we have 2 animals thus far
Animal.instances.each do |animal| animal.speak end #=> Bow wow! Meow!
Давайте создадим еще одну собаку:
Spot = Dog.new #=> Another Dog instance
Dog.instances.size #=> 2 -- we now have 2 dogs
Fido.class #=> Dog -- Fido is an instance of class Dog
Spot.class #=> Dog -- Spot is also an instance of class Dog
Fido.class.ancestors #=> The output shows you that Fido is also an Animal
Animal.instances.size #=> 3 -- together, we have 3 animals
Animal.instance_names #=> [:Fido, :Stripes, :Spot]
Animal.instance(:Fido).speak #=> Bow wow!
Animal.instances.each &:speak #=> Bow wow! Meow! Bow wow!
ПОНЯЛ? Помните, что в Ruby никогда не работает без NameMagic
.
Это объект класса 'Class'. Итак, это класс. :) –
, то почему Dog.superclass создает объект? – nik7
Потому что классы - это объекты. –