Можно ли использовать блоки объявления в объявлениях переменных?

Когда я бегу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) позволит предоставлять доступ к документам декларатора, прикрепленным к чему бы то ни было (хотя пока этого не происходит); это по-прежнему не обеспечит доступ к документам во время выполнения, но предоставит инструменты для их анализа и извлечения.

Другие вопросы по тегам