2016-02-15 5 views
13

Я просматривал Perl 6 docs on the shift routine и увидел этот отрывок:В чем разница между: D и: D :?

Defined как:

multi sub shift(Array:D) 
multi method shift(Array:D:) 

Я знаю :D означает, что Array является defined и не Any или Nil, но что :D:? Это очень сложно найти.

This section документов типа подпись docs содержит больше примеров синтаксиса, но не позволяет (насколько я могу судить) объяснить это.

ответ

11

Обозреватель метода передается как неявный первый аргумент. Если вы хотите использовать явный параметр в сигнатуре (например, добавить смайлик типа :D или просто дать ему более описательное имя), вам нужно отделить его от : вместо , от остальной части списка параметров , Это необходимо даже в случае пустого списка, поэтому его можно устранить из подписи с регулярным позиционным параметром.

Дополнительную информацию можно найти in the design documents.

Смежные вопросы