Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
func larger<T>(_ a: T, _ b: T) -> T {
a > b ? a : b
}
print(larger(7, 3))Не скомпилируется
- Ждать
7, потому что в вызов передаютInt, а числа сравнивать можно. Тело проверяется для любогоT, поэтому нужен<T: Comparable>. - Ждать, что проверка случится при запуске, когда
Tуже известен. Компилятор отвергает функцию до старта программы, и не выполняется ничего.
- Как изменить объявление, чтобы программа напечатала
7? - Какую ошибку даст
larger(Point(x: 1), Point(x: 2)), когда ограничение уже добавлено?