Взятые из Ios 10 Основы программирования:Swift ExpressibleByIntegerLiteral - Как именно он работает?
«Потому что гнездо принимает ExpressibleByIntegerLiteral, мы можем пройти Int, где, как ожидается, гнездо, и наш Init (integerLiteral :) будет называться АВТОМАТИЧЕСКИ .....»
struct Nest : ExpressibleByIntegerLiteral {
var eggCount : Int = 0
init() {}
init(integerLiteral val: Int) {
self.eggCount = val
}
}
Итак, мой вопрос в том, что ... Как он называется автоматически, хотя ??? Моя логика проникает в кирпичную стену, когда я пытаюсь понять, почему. Из того, что я вижу, вы можете сказать:
var eggie : Nest = 5
, но ... хорошо, где есть логика в том, как число 5 после знака равенства на самом деле является сокращением для:
var eggie : Nest = Nest(5)
ИНАЧЕ " стандартный 'способ инициализации нового экземпляра ...
Это что-то скрытое глубоко внутри протокола ExpressibleByIntegerLiteral, который обрабатывает это преобразование?
Благодаря
* Компилятор * преобразует 'var eggie: Nest = 5' в' var eggie = Nest (integerLiteral: 5) ' –