Использование двоеточия в вызовах методов и функций в Perl 6

Мне интересно, что двоеточия имеют отношение к вызовам методов и функций в Perl 6. Для справки, я использую версию perl6 2015.05-55-gd84bbbc, построенную на версии MoarVM 2015.05.

Я только что увидел следующее вТестирование Perl6 (S32-io) (Я добавил комментарий):

$fh.print: "0123456789A";   # prints '0123456789A' to the file

Насколько я могу судить, это эквивалентно:

$fh.print("0123456789A");   # prints '0123456789A' to the file

Оба из них, кажется, принимают несколько аргументов и хорошо сглаживают списки:

$fh.print: "012", "345", "6789A";   # prints '0123456789A' to the file
$fh.print("012", "345", "6789A");   # prints '0123456789A' to the file

my @a = <012 345 6789A>;

$fh.print(@a);   # prints '0123456789A' to the file
$fh.print: @a;   # prints '0123456789A' to the file

Должна быть какая-то причина иметь эти два разных синтаксиса. Есть ли причина использовать тот или иной синтаксис?

Я также заметил, что мы должны использовать либо: или же() с печатью, когда используется как метод:

$fh.print(@a);   # Works
$fh.print: @a;   # Works!
$fh.print @a;    # ERROR!

Существует также несколько интересных действий при использовании двоеточия с функциейprint, В этом случае,: а также() не эквивалентны:

print @a;  # Prints '0123456789A' (no newline, just like Perl 5)
print(@a); # Ditto
print: @a; # Prints '012 345 6789A' followed by a newline (at least in REPL)

print  @a, @a; # Error (Two terms in a row)
print: @a, @a; # Prints '012 345 6789A 012 345 6789A' followed by a newline (in REPL) 

Затем я попытался использовать печать в файле сценария. Это работает для печати на стандартный вывод:

print @a;

Однако это не выводит на стандартный вывод:

print: @a, @a;

Но версия метода работает нормально:

$fh.print: @a, @a; # Prints '0123456789A0123456789A' to the file

Я чувствую, что почти понимаю это, но не могу выразить это словами. Может кто-нибудь объяснить, пожалуйста, эти варианты использования печати. Кроме того, изменится ли это поведение из-за Рефактора Великого Списка?

Ответы на вопрос(2)

Ваш ответ на вопрос