Комментарии 19
В последнем вопросе забыли еще, судя по всему, одно из двух: или добавить
Использование в продакшене протоколов ExpressibleBy…Literal — это имхо крайне порочная практика. С их помощью Apple завернули те типы, которые кажутся примитивными (Int, Double, String и т.д.) в структуры. Но определять
case node(T)
, или в существующем case объявить List опциональным. Иначе не создать начальную/конечную ноду линкд листа, а enum по смыслу соответствует Never. Использование в продакшене протоколов ExpressibleBy…Literal — это имхо крайне порочная практика. С их помощью Apple завернули те типы, которые кажутся примитивными (Int, Double, String и т.д.) в структуры. Но определять
var t: Thermometer = 36.6
… С точки зрения читаемости кода никак не выдаёт тип как отвечающий Expressible протоколу, кажется, что сам тип — это что-то типа числа с плавающей точкой.+1
Наверное, четвертый вопрос для intermediate стоило бы отнести все же к начальному уровню, ведь протоколы и их поведение изучаются в самых основах разработки с использованием swift. В последних курсах от Стэнфорда они рассматриваются уже на четвертой лекции.
+1
когда вы не можете инициализировать свойство, которое не nil в момент создания. Типичный пример — outlet у Interface Builder, который всегда инициализируется после его владельца. В этом особенном случае, если в Interface Builder всё правильно сконфигурировано — вам гарантировано, что outlet не-nil перед его использованием.
Не гарантированно, бывает контроллер уже создан и активен, а вот вьюха его еще не загрузилась и оутлеты пустые. Из наиболее часто встречаемого попробуйте пихнуть контроллер в UITabbarController — у него все подчиненные контроллеры создаются вместе с ним, а вот их вью загружаются при первом переходе на них. Причем ходили слухи что таббар и выгрузить вью может, но с такой ситуацией я на практике не сталкивался в отличии от пустых оутлетов
0
НЛО прилетело и опубликовало эту надпись здесь
решений до кучи, не только то, что вы написали.
Там вообще-то предложено два решения. И это перевод.
ответ завернули так, что отсутствие nil в Objective-C оказывается было недостатком?!
Там вроде не даётся никакой оценки, хорошо это или плохо. Просто констатируется.
из-за которого стараюсь избегать структуры в принципе.
Всё хорошо к месту. Зато у структур есть Memberwise Initializers.
0
НЛО прилетело и опубликовало эту надпись здесь
Так «вот жи он»
)) Так это ж как раз вариант «в гамаке и на лыжах»!
0
Глупый ответ, неужели вы бы требовали от разработчика на собеседовании писать такое — «objc_getAssociatedObject и т д».
Сами небось полезли гуглить. Без выкрутасов из коробки язык не позволяет этого делать — ответ верный, остальное только удовлетворение вашего самолюбия.
Сами небось полезли гуглить. Без выкрутасов из коробки язык не позволяет этого делать — ответ верный, остальное только удовлетворение вашего самолюбия.
0
Не, ну в качестве иллюстрации на тему «разработчики развлекаются» — норм. Как ответ на вопрос, предполагающий устный ответ — вряд ли подойдёт. Из комментариев оттуда: «Боже, надеюсь, что мне это никогда не пригодится!»
0
НЛО прилетело и опубликовало эту надпись здесь
Вообще говоря, ничего странного — вопрос про переопределение оператора разумно расположен в разделе письменных. И способ не «дикий», а самый обычный. И я во второй раз напоминаю, что это — ПЕРЕВОД.
0
Полагаю, на собеседовании достаточно ответить скучно — так, как о Stored Property написано в официальном руководстве.
Extensions
Extensions
Extensions can add new computed properties, but they cannot add stored properties, or add property observers to existing properties.
0
Beginner, устный 5 вопрос. Есть еще как мимнимум 1 способ с использованием map. Особенно удобно если необходимо вызвать функцию которая принимает не опциональное значение.
var x : String? = "Test"
x.map{ print($0) }
+1
Beginner. Письменный вопрос 3.
В данном случае можно еще короче:
В данном случае можно еще короче:
animals.sort()
– сортирует по возрастанию, работает для типов, реализующих Comparable
.+1
Beginner. Устный вопрос 4. (Думаю, это просто неточная формулировка, но все же.)
В обоих перечисленных случаях вполне можно работать с обычным «optional» – просто придется его «разворачивать» перед использованием (
Таким образом, кажется, что нет ситуаций, когда именно НЕЛЬЗЯ избежать «force-unwrapping». Другое дело, что кое-где это и не нужно.
В обоих перечисленных случаях вполне можно работать с обычным «optional» – просто придется его «разворачивать» перед использованием (
?
, guard let
, if let
).Таким образом, кажется, что нет ситуаций, когда именно НЕЛЬЗЯ избежать «force-unwrapping». Другое дело, что кое-где это и не нужно.
+1
Advanced. Письменный вопрос 2. (Просто небольшое дополнение.)
Скопировать и вставить в «Playground» «as is» не получится из-за функции
Скопировать и вставить в «Playground» «as is» не получится из-за функции
pow(:)
, которая не является частью стандартной библиотеки «Swift» – нужно импортировать «Foundation» (или «Accelerate» – для полного сужения).+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Собеседование: Swift. Вопросы и ответы