Как стать автором
Обновить

Комментарии 8

var lostGPS: Bool = false
var lowBattery: Bool = true

do {
 try autoDriveTesla() 
 } catch TeslaError.lostGPS {
  print("Bruh, I'm lost. Hold me tight")
 } catch TeslaError.lowBattery {
  print("HURRY! ")
 }
}


Революционный пример — число открывающих и закрывающих скобок не совпадает.
На протяжении чтения статьи сохранялось сильное ощущение, что читаю статью из песочницы. Какая-то она поверхностная получилась.

Ну вот как такое можно было написать?
Честно говоря, я точно не знаю, что делает Error протокол, но при обработке ошибок без этого не обойдешься.
Разработчики Swift так решили, и я не хочу задаваться вопросом об их мотивах. Я просто использую то, что они для нас сделали.
Последняя фраза просто сразила наповал. Для меня это звучит как «Разработчики сказали, что перед компиляцией нужно 3 раза хлопнуть в ладоши. Я не хочу задаваться вопросом об их мотивах, просто сделаем то, что они просят.»
Когда я был младше, я начинал изучать документацию языка Swift. Я по несколько раз прочёл все главы, кроме одной: «Error Handling».

После прочтения статьи напрашивается вывод, что лучше главы не пропускать. Понимаю, что перевод, но сама статья слабовата как-то
Когда я был младше, я начинал изучать документацию языка Swift

Но сейчас-то повзрослел… Зрелый язык, зрелое отношение к документации.
Почему try? не рекомендуется использовать, а try! — можно? То есть, по мнению автора, пусть лучше приложение упадёт, чем вернёт Optional?

Мне кажется, что логика следующая: получая Optional мы теряем информацию о произошедшей ошибке.
Насчёт падения: иногда лучше упасть, чем продолжать неадекватно работать, хотя как общий подход это, конечно, не лучший вариант.

var lostGPS: Bool = true
var lowBattery: Bool = false

func autoDriveTesla() {
 if lostGPS {
  print("I'm lost, bruh. Hold me tight")
  // A lot more code

 }
 if lowBattery {
  print("HURRY! ")
  // Loads of code 
 }
}


Итак, если бы я запустил это:

autoDriveTesla() // "HURRY! "

У нас там, вроде, lostGPS == true. Так почему мы должны получить вывод «HURRY! » при запуске этого?

А вот lowBattery == false как раз. Поэтому ни о каком "HURRY! " точно не может быть речи. :)

Зарегистрируйтесь на Хабре , чтобы оставить комментарий