Подтвердить что ты не робот

Какая разница между: D и: D:?

Я просматривал документы Perl 6 в подпрограмме shift и видел этот фрагмент:

Определено как:

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

Я знаю, что :D означает Array is defined, а не Any или Nil, но что :D:? Очень трудно найти.

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

4b9b3361

Ответ 1

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

Более подробную информацию можно найти в документах по дизайну.