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

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

В последнем вопросе забыли еще, судя по всему, одно из двух: или добавить case node(T), или в существующем case объявить List опциональным. Иначе не создать начальную/конечную ноду линкд листа, а enum по смыслу соответствует Never.

Использование в продакшене протоколов ExpressibleBy…Literal — это имхо крайне порочная практика. С их помощью Apple завернули те типы, которые кажутся примитивными (Int, Double, String и т.д.) в структуры. Но определять var t: Thermometer = 36.6… С точки зрения читаемости кода никак не выдаёт тип как отвечающий Expressible протоколу, кажется, что сам тип — это что-то типа числа с плавающей точкой.
Наверное, четвертый вопрос для intermediate стоило бы отнести все же к начальному уровню, ведь протоколы и их поведение изучаются в самых основах разработки с использованием swift. В последних курсах от Стэнфорда они рассматриваются уже на четвертой лекции.
Да там несколько сомнительных с точки зрения уровня вопросов. Скажем, тип замыкания или цикл сильных ссылок (оба находятся в разделе Advanced). Мне кажется, что про это хорошо бы знать уже в начале. Но это перевод, так что оставил все как есть.
когда вы не можете инициализировать свойство, которое не nil в момент создания. Типичный пример — outlet у Interface Builder, который всегда инициализируется после его владельца. В этом особенном случае, если в Interface Builder всё правильно сконфигурировано — вам гарантировано, что outlet не-nil перед его использованием.

Не гарантированно, бывает контроллер уже создан и активен, а вот вьюха его еще не загрузилась и оутлеты пустые. Из наиболее часто встречаемого попробуйте пихнуть контроллер в UITabbarController — у него все подчиненные контроллеры создаются вместе с ним, а вот их вью загружаются при первом переходе на них. Причем ходили слухи что таббар и выгрузить вью может, но с такой ситуацией я на практике не сталкивался в отличии от пустых оутлетов
НЛО прилетело и опубликовало эту надпись здесь
решений до кучи, не только то, что вы написали.

Там вообще-то предложено два решения. И это перевод.
ответ завернули так, что отсутствие nil в Objective-C оказывается было недостатком?!

Там вроде не даётся никакой оценки, хорошо это или плохо. Просто констатируется.
из-за которого стараюсь избегать структуры в принципе.

Всё хорошо к месту. Зато у структур есть Memberwise Initializers.
НЛО прилетело и опубликовало эту надпись здесь
Так «вот жи он»

)) Так это ж как раз вариант «в гамаке и на лыжах»!
Глупый ответ, неужели вы бы требовали от разработчика на собеседовании писать такое — «objc_getAssociatedObject и т д».
Сами небось полезли гуглить. Без выкрутасов из коробки язык не позволяет этого делать — ответ верный, остальное только удовлетворение вашего самолюбия.
Не, ну в качестве иллюстрации на тему «разработчики развлекаются» — норм. Как ответ на вопрос, предполагающий устный ответ — вряд ли подойдёт. Из комментариев оттуда: «Боже, надеюсь, что мне это никогда не пригодится!»
НЛО прилетело и опубликовало эту надпись здесь
Вообще говоря, ничего странного — вопрос про переопределение оператора разумно расположен в разделе письменных. И способ не «дикий», а самый обычный. И я во второй раз напоминаю, что это — ПЕРЕВОД.
Полагаю, на собеседовании достаточно ответить скучно — так, как о Stored Property написано в официальном руководстве.

Extensions

Extensions can add new computed properties, but they cannot add stored properties, or add property observers to existing properties.
Beginner, устный 5 вопрос. Есть еще как мимнимум 1 способ с использованием map. Особенно удобно если необходимо вызвать функцию которая принимает не опциональное значение.
var x : String? = "Test"
x.map{ print($0) }
Beginner. Письменный вопрос 3.
В данном случае можно еще короче: animals.sort() – сортирует по возрастанию, работает для типов, реализующих Comparable.
Но в задании нужно максимально упростить именно замыкание, а не код в целом.
Это высшая степень упрощения замыкания — перемножение его на ноль! ) Как вариант ответа — вполне допустим, я думаю.
Beginner. Устный вопрос 4. (Думаю, это просто неточная формулировка, но все же.)
В обоих перечисленных случаях вполне можно работать с обычным «optional» – просто придется его «разворачивать» перед использованием (?, guard let, if let).
Таким образом, кажется, что нет ситуаций, когда именно НЕЛЬЗЯ избежать «force-unwrapping». Другое дело, что кое-где это и не нужно.
Advanced. Письменный вопрос 2. (Просто небольшое дополнение.)
Скопировать и вставить в «Playground» «as is» не получится из-за функции pow(:), которая не является частью стандартной библиотеки «Swift» – нужно импортировать «Foundation» (или «Accelerate» – для полного сужения).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории