Nano Hash - криптовалюты, майнинг, программирование

Суперкласс класса и суперкласс String

Class имеет суперкласс Module, но любой класс, например String, имеет суперкласс Object. Почему это?

09.04.2014

  • Это неправда. Integer имеет суперкласс Numeric. 12.10.2015
  • Module – это Object, что делает Class также Object. 12.10.2015

Ответы:


1

Чтобы понять это, вам нужно проверить Объектная модель Руби:

Классы, модули и объекты взаимосвязаны. На следующей диаграмме вертикальные стрелки представляют наследование, а скобки — метаклассы. Все метаклассы являются экземплярами класса Class.

                         +---------+             +-...
                         |         |             |
         BasicObject-----|-->(BasicObject)-------|-...
             ^           |         ^             |
             |           |         |             |
          Object---------|----->(Object)---------|-...
             ^           |         ^             |
             |           |         |             |
             +-------+   |         +--------+    |
             |       |   |         |        |    |
             |    Module-|---------|--->(Module)-|-...
             |       ^   |         |        ^    |
             |       |   |         |        |    |
             |     Class-|---------|---->(Class)-|-...
             |       ^   |         |        ^    |
             |       +---+         |        +----+
             |                     |
obj--->OtherClass---------->(OtherClass)-----------...

На все ваши вопросы можно ответить, посмотрев на диаграмму выше.

но любой класс, например "String", вы получаете суперкласс "Object". Почему это?

Посмотрите на OtherClass на схеме. Hash, String, Array и т. д. все OtherClass.

в Ruby сам "Класс" имеет надкласс "Модуль"

Вот как это устроено, опять же можно ответить по схеме.

09.04.2014

2

В ruby ​​все является объектом, включая класс, в то время как сами классы также являются объектами. Объект String имеет собственный класс с именем Class. String сам по себе также является классом, а суперклассом String является «Object».

Между тем, Class сам по себе тоже является объектом, однако надклассом является Module, который разработан языком Ruby.

07.10.2015
  • Не могли бы вы обернуть языковые понятия/ключевые слова символами `? Это даст хорошее форматирование для таких слов, как this. 07.10.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование