Quantcast
Viewing all articles
Browse latest Browse all 517051

Классы, объекты и self - Ruby

Добрый вечер)
Читаю литературу по руби. Разумеется есть вопросы.
1)
Есть объект
Код:

class A
  def hello
      puts 'hello world'
    end
end
a = A.new
c =  a.class

я пишу
Код:

a.same_action
Мне ясно, что метод same_action будет искаться в классе A, если там его нет, то в классе Object.
Как я себе это представляю.
есть экземпляр объекта Class
Пусть будет
Код:

class_obj = a.class
именно в нем(??) будет содержаться метод same_method если он объявлен в классе A. Именно в нем интерпретатор ищет этот метод вначале?
В противном случае у объекта class_obj будет вызван метод superclass и искомый метод будет искаться в superclass_obj?
Чувствую что что-то понимаю не так.

Следующий вопрос
2)
Код:

a = A.new
def a exctended
  puts "12345"
end

Насколько я понял будет создан анонимный объект, который будет содержаться в
Код:

metaclass = a.class
и в
Код:

metaclass.superclass
ссылаться на A. Вообще насколько я понимаю классов как таковых в руби не существует, есть просто объекты и другие объекты которые описывают объекты?
А если я напишу

Код:

class A
  def hello     
      puts "hello #{self.world}"
    end
    def world     
      puts 'world'
    end
  def self.exctended
      puts "12345"
  end
end
a = A.new

В методе hello self ссылается на a?
В объявлении класса self.extended self ссылается на экземпляр a.class Так как A это экземпляр класса class?
В общем извиняюсь за наверняка глупые и запутанные вопросы

Добавлено через 6 минут
И существует ли объект a.class в тот момент когда я объявляю класс A. Насколько я понимаю объявление класса в руби и строго типизированном языке аля джава или шарп это абсолютно непохожие операции, при этом имеющие некие более менее общие цели.

Viewing all articles
Browse latest Browse all 517051

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>