Anton
никто не берет джуниора для практики
Anton
парадокс
Anton
нет парадокса
Vadim D.
никто не берет джуниора для практики
Джун пока не стал синьором никому не нужен
Евгений
Кто нибудь может объяснить зачем нужны дженерики в свифте если все можно без них написать, например, с использованием протоколов?
Anton
джуниор попрактикуется за счет компании и пойдет фрилансить, эльфов рисовать в игрульках
Anton
Кто нибудь может объяснить зачем нужны дженерики в свифте если все можно без них написать, например, с использованием протоколов?
например если в nsfrc юзать дженерик, то не надо кастовать будет объекты в fetchedObjects к нужному типу
Anton
дженерики тема
Евгений
ну в чем разница что мы пишем например func <T>(arg : <T: MyProtocol>) и если пишем func (arg: MyProtocol)?
Евгений
компилятор все равно до рантайма проверит что мы ему суем
Anton
Тебе сейчас объяснят, почему не только дженерики в свифте не нужны, но и сам свифт
Помню шутейку: в русском комьюнити тебе не только объяснят как все делать, чтобы ты понял, но еще и докажут какое ты говно
Anton
)
Евгений
в obj-c они есть
Евгений
но они мягкие
Anton
ммм, дай потрогать
Anonymous
ну в чем разница что мы пишем например func <T>(arg : <T: MyProtocol>) и если пишем func (arg: MyProtocol)?
Что ты можешь получить на выходе из первого варианта и из второго?
Евгений
получу arg типа MyProtocol
Anonymous
получу arg типа MyProtocol
В первом случае ты конкретный тип можешь получить, а во втором - нет
Vadim D.
Мягкие дженерики
Anton
как в детстве
Vadim D.
как в детстве
Хорошее детство
Евгений
В первом случае ты конкретный тип можешь получить, а во втором - нет
ну а какая разница если мы к нему все равно обращаемся с позиции что он некий класс который конформит MyProtocol?
Anton
Хорошее детство
сделай скидос на ипотеку, а?
Anton
Если ты например не знаешь какой тип тебе придет, то ты указываешь дженерики
Anonymous
ну а какая разница если мы к нему все равно обращаемся с позиции что он некий класс который конформит MyProtocol?
Разница в том, что если тебе не нужен конкретный класс, то можешь использовать просто протокол.
Евгений
Разница в том, что если тебе не нужен конкретный класс, то можешь использовать просто протокол.
а в каком случае тогда мне может быть нужен конкретный класс и вот использовать протокол не получилось бы?
Anton
в случае с fetchedresultscontroller
Vadim D.
сделай скидос на ипотеку, а?
Без проблем Заключаем контракт на 5 лет что ты у меня работаешь за 90к Уволишься раньше штраф
Евгений
в случае с fetchedresultscontroller
кто вообще кор дату использует на свифте?))
Anton
а что, есть что-то более крутое?
Vadim D.
кто вообще кор дату использует на свифте?))
Кто её вообще использует? Аппл её давно забросила
Vadim D.
а че делать надо будет?
Я тебе потом покажу
Anton
это плохой контракт
Евгений
func doWeirdThing<T: WeirdThing>() -> T
только в случае когда нам нужно конкретный класс вернуть?
Anton
а что вместо?
Anton
а кстати тот же Array
Anton
там же тоже generic
Anton
чтобы ты знал, что хранится у тебя
Евгений
Или использовать внутри.
а в остальных случаях где они лучше? или где их стоит использовать? Есть какое-то правило, используй дженерики в таком то случае?
Евгений
а кстати тот же Array
Я видел записи типа [Class<T>]. В чем смысл так писать?
Anton
ну смари. Array<AnyObject>
Anton
if let item = arr[1] as MyConcreteObject {
Anton
vs. Array<MyConcreteObject>
Anton
let item = arr[1];
Евгений
Разберись, чем отличается конкретный объект от протокола
ну а чем? вот если у нас есть класс, например, UIView, а нам нужны только методы из MyProtocol, мы же все равно если этот UIView передадим в функцию типа func <T>(arg : <T: MyProtocol>) не сможем использовать методы класса UIView, а только методы MyProtocol. Или нет?
Евгений
ну смари. Array<AnyObject>
не совсем понятно, массивы они и так содержат только одинаковые типы
Anton
AnyObject - может быть любой объект
Anton
необязательно одинаковые
Евгений
Сможем вернуть UIView (edited)
и как функция это поймет? Если она знает только что у нее есть объект <T: MyProtocol>. понятно что мы можем попробовать кастинг, но для этого дженерики не нужны
Евгений
AnyObject - может быть любой объект
Так же как и суперкласс любого класса, разве нет? class Employee : Person, clsas Human : Person {} Array<Person>, пихай и то то
Евгений
Не будет кастинга блин
ну если не будет тогда объясни или приведи пример, говорить - не знаешь иди почитай любой может
Anonymous
ну если не будет тогда объясни или приведи пример, говорить - не знаешь иди почитай любой может
Ты отправляешь запрос на сервер и ждешь объект User, а не протокол ServerObject
Евгений
Ты отправляешь запрос на сервер и ждешь объект User, а не протокол ServerObject
так а что мешает в теле функции без дженериков запросить объект этого класса?
Евгений
Вернет тебе метод что?
ну то что без дженериков нельзя вернуть класс я уже понял. я спрашиваю есть ли еще ситуации когда без них не обойтись
Anonymous
Ничего, тебе для конкретного типа он и нужен. В объекте или методе - неважно
Anonymous
Если конкретный тип не нужен - используется протокол
N
я
Anonymous
юзал. 15" ту самую последнюю апгрейдимую по памяти и оптибею не-ретину
Anonymous
MD103
Anton
Это чтобы жсон парсить?
Anton
Че это? On demand routing?
Dmitry
кому чаю налить? Даржелинг, маргарет хоуп, хороший.
Ravshan
Кто использует RxSwift фреймворк? Есть книги про Rx?
Dmitry
тебя свифтофобы разорвут