#swift
Вопрос:
Следующий фрагмент кода хорош, но можно ли опустить isOnboarding
параметр из ContactsViewController
класса?
Это означало ContactsViewController
бы , что не соответствует ErrorController
, но есть ли в любом случае необходимость использовать функцию с параметром, который в данном случае не используется?
class ErrorViewControllerDelegate {}
protocol ErrorController {
func showError(_ error: String, isOnboarding: Bool)
}
extension ErrorController {
func showError(_ error: String, isOnboarding: Bool = true) {
showError(error, isOnboarding: isOnboarding)
}
}
class ContactsViewController: UIViewController, ErrorController {
func showError(_ error: String) {
showError(error)
}
}
let contacts: ErrorController = ContactsViewController()
contacts.showError("I don't need a delegate.")
contacts.showError("I need a delegate.", isOnboarding: true)
Цель: использовать func showError(_ error: String)
, а не func showError(_ error: String, isOnboarding: Bool)
как функцию, чтобы соответствовать ErrorController
in ContactsViewController
.
Комментарии:
1. Возможно, я ошибаюсь, но разве ваш код не вызывает бесконечную рекурсию?
2. Да, это правильно. В этом-то и проблема. Если вы используете функцию showError(_ ошибка: Строка, isOnboarding: Bool), она работает должным образом. Но может ли это работать с unc showError(_ ошибка: строка)?
3. Ммм, нет? Каков именно ваш ожидаемый результат? Прямо сейчас у вас есть только 2
showError
метода, оба из которых вызывают другойshowError
метод. Независимо от того, как вы измените их подписи, рекурсия не прекратится. Я предлагаю вам добавить несколько4. Есть ли в любом случае необходимость использовать функцию с параметром, который в данном случае не используется? У меня есть рабочий код, но я хотел бы знать, могу ли я его улучшить.
5. Да, есть, но почему ваши функции вызывают сами себя?