Что делает «серийный»? - PullRequest
9 голосов
/ 09 мая 2019

Из документов , которые говорят,

Returns the self-reference to the instance itself:
    my $b; # defaults to Any 
    say $b.serial.^name;   # OUTPUT: «Any␤» 
    my $breakfast = 'food';
    $breakfast.serial.say; # OUTPUT: «food␤» 

У меня нет ни малейшего понятия, что делает эта процедура, пожалуйста, кто-нибудь может объяснить?

Ответы [ 2 ]

9 голосов
/ 09 мая 2019

На Supply с, это информационный метод, который должен указывать, не будет ли никогда никакого одновременного emit в этом предложении.

На HyperSeq и RaceSeq он возвращает сериализованный Seq, так что вы можете считать его противоположным методу hyper и race.

В общем, кажется, что он возвращается сам, что, кажется, имеет смысл с точки зрения HyperSeq и RaceSeq.

И да, они должны быть правильно задокументированы, поэтому, пожалуйста, создайте проблему с документацией. Спасибо!

7 голосов
/ 09 мая 2019

В примере с документом ничего не происходит.То есть, если вы удалите его, вы получите те же результаты:

my $b; # defaults to Any 
say $b.^name;   # OUTPUT: «Any␤» 
my $breakfast = 'food';
$breakfast.say; # OUTPUT: «food␤» 

В целом, я думаю, вам лучше игнорировать метод serial, кроме как открыть проблему с документом, указывающую на этот SO, если выХотелось бы улучшить документацию.

Похоже, что метод serial не на официальном языке

Поиск репозитория для "serial" дает ноль совпадений.

В исходном коде Rakudo имя метода serial было перегружено, чтобы иметь одно из трех значений:

  • Логическое значение, указывающее, является ли Supplyпоследовательность всегда последовательнаПримеры источников Rakudo: 1 , 2 .Это выглядит как внутренний метод, который не нужно документировать.

  • Приведение параллельной последовательности ( гипер или раса ) к серийной версии той же последовательности.Это выглядит для меня как внутренний метод, который не нужно документировать.

  • A "no op" , который возвращает свой инвокант.Я подозреваю, что было бы лучше, если бы это не было задокументировано, по крайней мере, до тех пор, пока его смысл не ясен;его официальный статус viz-a-viz spec (жаркое) ясен;и / или есть попытка систематически задокументировать, для каких операций установлен is nodal.

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

Определение класса Any метода serial кажется бессмысленным

Метод Any class serial возвращает self, то есть при вызове это не оператор.

В настоящее время я не понимаю, почему существует определение класса Any.

Один из возможных моментов для этого состоит в том, что во внутреннем коде в случаяхнеизвестный и, как правило, непознаваемый класс, поэтому в классе Any должно быть определение по умолчанию serial.

Но поиск rakudo-репо для ".serial" предполагает, что звонки делаются только на поставки или гипер / расовые последовательности.

Тем не менее, я отмечаю черту is nodal в объявлении proto serial в Any, которое непосредственно предшествует объявлению multi method serial.Возможно, именно поэтому он находится в Any.

См. Также Произвольный дрейф методов к Mu и Any.

Документация, которую вы цитировали, кажется бессмысленной

Определение и пример, кажется, отражают чье-то чувство юмора.Я приветствую использование юмора, но в этом случае я подозреваю, что лучшим улучшением было бы просто удалить страницу, на которую вы ссылались.

...