Можно ли использовать блоки объявления в объявлениях переменных?
Когда я бегуraku --doc test.raku
на следующий код:
#! /usr/bin/env raku
use v6.d;
#| The answer
my Int $bar = 42;
#= Thank you, Douglas
say $bar.WHY.leading;
say $bar.WHY.following;
Я не получаю выход. Когда я запускаю код (raku test.raku
), вывод:
Nil
Nil
Есть ли способ использовать блоки объявления с переменными?
1 ответ
Синтаксически корректно размещать комментарий декларатора в любом месте; можно даже поместить это в утверждение:
#| Look, a statement
say "hello";
В настоящее время Rakudo будет прикреплять документацию только к пакетам, атрибутам, процедурам и параметрам, поскольку у них есть метаобъекты, которые имеют средства для прикрепления документации.
В отличие от этого, Comma IDE также отслеживает комментарии документации к переменным и может отображать их на сайтах использования переменной:
Однако IDE, отслеживающая их, сильно отличается от реализации Rakudo, делающей их доступными во время выполнения.
Если бы комментарии декларатора работали с переменными, почти наверняка пришлось бы написать:
say $bar.VAR.WHY.leading;
Потому что иначе можно было бы говорить о том, что находится в переменной, а не оScalar
(илиArray
илиHash
) сам контейнер. Даже тогда, если связать:
#| The answer
my Int $bar := 42;
Кроме того, нет контейнера, к которому можно прикрепить документацию, поэтому нет способа сделать ее доступной во время выполнения.
Грядущий RakuAST (стандартизированная объектная модель документа для кода Raku) позволит предоставлять доступ к документам декларатора, прикрепленным к чему бы то ни было (хотя пока этого не происходит); это по-прежнему не обеспечит доступ к документам во время выполнения, но предоставит инструменты для их анализа и извлечения.