Swift опускается. Сам, чтобы вызвать функцию, которая нуждается в метатипе?
Вот код, который я пишу:
func printType<T: Any>(one: T.Type) {
print(one)
}
func printType2<T: Any>(one: T.Type, name: String) {
print(one)
}
printType(Set<Int>)
printType2(Set<Int>.self, name: "name")
интересно, почему printType(Set<Int>)
может работать. И в printType2(Set<Int>.self, name: "name")
Я не могу оставить себя, чтобы заставить его работать.
Редактировать:
Я хочу знать, какое правило подразумевает, когда я могу опустить .self
, Я пытался найти его в официальных ссылках Apple, но не получилось.
Редактировать:
Я тестирую коды в версии Xcode 7.1 (7B91b).
1 ответ
Я также спрашиваю об этом на официальном форуме Apple, и получаю ответ там:
Это известная недокументированная особенность Swift начиная с 1.0 (или бывшая> бета-версия, которую я не могу подтвердить).
При вызове метода или функции с аргументом одного типа вы можете опустить>.self. Я предполагаю, что эта функция включена в Swift, чтобы сделать sizeof-like функции> аккуратными, но не уверенными.