• Мы можем использовать MyClass
Функции, определенные в других пространствах имен, должны использовать свои полные пути; то есть MyOtherClass#foo
MyOtherClass.new
и MyOtherClass::CONST
соответственно. Определенные перегрузки также можно связать с помощью полной подписи, например #increment или #increment(by)
.Если метод имеет тип возвращаемого значения или параметр имеет ограничение типа, Crystal автоматически свяжет их со связанным типом, если эти типы определены в одном проекте. Типы, определенные в стандартной библиотеке Crystal или во внешних сегментах, по умолчанию не связаны.
Если вы хотите добавить дополнительную документацию к параметру метода, рекомендуется выделить имя параметра курсивом, например:
# Returns of sum of *value1* and *value2*.
def add(value1 : Int32, value : Int32); end
Комментарии к документации поддерживают большинство функций уценки, таких как ограничения кода, упорядоченные/неупорядоченные списки, заголовки, кавычки и многое другое. Давайте посмотрим на них дальше!
Форматирование
Одна из наиболее распространенных функций уценки, которую вы будете использовать при документировании кода, — это ограничения кода
. Их можно использовать для подсветки синтаксиса фрагментов кода, которые показывают, как использовать метод или тип, следующим образом:# ## Example
#
# '''
# value = 2 + 2 => 4
# value # : Int32
# '''
module MyModule; end
Приведенный выше код создает подзаголовок с границей кода. По умолчанию языком ограничения является Crystal, но его можно переопределить, явно пометив язык, который вы хотите использовать, например '''yaml
# => value
для обозначения значения чего-либо в блоке кода. # : Type
также можно использовать для отображения типа определенного значения.Другая причина использования синтаксиса значения # =>
В некоторых случаях вы можете подчеркнуть конкретное предложение, чтобы обозначить, что что-то необходимо исправить, или предупредить читателя о чем-то. Для этой цели можно использовать несколько ключевых слов-предупреждений
, например:# Runs the application.
#
# DEPRECATED: Use '#execute' instead.
def run; end
В предыдущем примере будет создана документация, которая выглядит следующим образом:
Рисунок 15.2 - Пример использования относительно
Ключевое слово предупреждения должно быть первым словом в строке и должно быть написано заглавными буквами. Двоеточие не является обязательным, но рекомендуется для удобства чтения.
См. https://crystal-lang.org/reference/syntax_and_ semantics/documenting_code.html#admonitions
для получения полного списка ключевых слов предупреждения.В предыдущем примере мы использовали предупреждение DEPRECATED
В случаях, когда вы хотите полностью объявить устаревшим тип или метод, предлагается использовать
DEPRECATED
, а также предоставит предупреждения компилятора, чтобы конечному пользователю было более очевидно, что является устаревшим.В дополнение к различным предупреждениям Crystal также включает несколько директив, которые можно использовать в комментариях к документации и влиять на ее создание. Давайте посмотрим на них дальше.
Директивы документации
Crystal также предоставляет несколько директив, которые сообщают генератору документации, как ему следует обращаться с документацией для конкретной функции. К ним относятся следующие:
• :ditto:
• :nodoc:
• :inherit:
Давайте подробнее посмотрим, что они делают.
Ditto
Директиву :ditto:
# Returns the number of items within this collection.
def size; end
# :ditto:
def length; end
# :ditto:
#
# Some information specific to this method.