Для чего используются <символы в классах Crystal? - PullRequest
1 голос
/ 06 апреля 2020

Что такое символ < в этом классе и какова его цель?

class CommentSerializer < BaseSerializer
  def initialize(@comment : Comment)
  end

  def render
    {body: @comment.body}
  end
end

https://crystal-lang.org/api/0.33.0/Class.html#T .class): BoolforallT-instance-method

Не уверен, правильно ли это или что это значит:

Возвращает, наследует ли этот класс или включает другой.

1 Ответ

4 голосов
/ 06 апреля 2020

< означает наследование. Вы должны прочитать class CommentSerializer < BaseSerializer как класс CommentSerializer, являющийся производным от или на основе BaseSerializer. CommentSerializer наследует поведения BaseSerializer: он получает все свои переменные экземпляра и все свои методы без необходимости их повторной записи. Эта идея наследования является общей для всех объектно-ориентированных языков программирования, так как это полезный способ express повторного использования кода: все вещи внутри BaseSerializer остаются неизменными в своих подклассах, и каждый подкласс добавляет вещи / вносит изменения в портной это обобщенное c поведение с определенной c целью.

Обнаруженный вами символ < был методом, который проверяет на это отношение. Это выражение и не то же самое, что < в объявлении (которое встроено в синтаксис). Идея в том, что вы определили CommentSerializer < BaseSerializer, и поэтому тест CommentSerializer < BaseSerializer вернет true. Повторное использование символа - это мнемони c.

Справочник по языку

...