12 дней успешности
: 11 ноя 2020, 14:48
Форум безумных фанатских битв на тему видеоигр
https://ru.madfanboy.com/forum/

Там не нужны никакие костыли
Я же не знаю свфитаNewfag писал(а): 11 ноя 2020, 14:58NightlyRevenger, давай теперь реши ту же задачу, но с дженерик протоколами https://paiza.io/projects/XB737Fp56ra2K ... uage=swift![]()
Потому что язык простой и мощныйNightlyRevenger писал(а): 11 ноя 2020, 15:00Сегодня первый раз в жизни его увидел и что-то на нём написал

Так ты написал почти тоже самоеNewfag писал(а): 11 ноя 2020, 14:50NightlyRevenger, крч как-то так синьор свифт девелуперы такую задачу должны решать https://paiza.io/projects/ioYKcnHJufzOz ... uage=swift![]()
Язык странныйNewfag писал(а): 11 ноя 2020, 15:02Потому что язык простой и мощныйNightlyRevenger писал(а): 11 ноя 2020, 15:00Сегодня первый раз в жизни его увидел и что-то на нём написал![]()
CODE: Выделить всё
"какая-то строка".selfНу общие принципы те же самые (стереть типы, скастить к типам, вычислить ключ на основе типов), тут как-то кардинально по-другому и не напишешь
А что использовать? Ты вообще инт используешь, который по хэшу вычисляется

Шаре есть тип Type который является объектом несущий в себе идентификатор типа и всё что с ним связанно
Зависит от языка

Отдали дань уважения Obj-CNightlyRevenger писал(а): 11 ноя 2020, 15:06Зачем использовать self вместо this (как это делают все)
Лейбл можно опустить так func test(_ value: Any) и потом писать просто test(1), зато можно закастомить лейб так func test(withValue value: Any) и писать так test(withValue: 1)NightlyRevenger писал(а): 11 ноя 2020, 15:06Зачем требовать обязательное использование именованных аргументов


Чет даже никогда так не делал
Там нет каста в строку, есть интерполяция типа в стору, типа был тип String, стала строка "String"NightlyRevenger писал(а): 11 ноя 2020, 15:10А кастуя что-то в строку ты по сути отказываешь от механизмов типизации языка
Так тут изначально задача отказаться от типизацииNightlyRevenger писал(а): 11 ноя 2020, 15:10А кастуя что-то в строку ты по сути отказываешь от механизмов типизации языка

Я не понимаю, почему так вообще можно сделать, если self это эквивалент this (но похоже, что нет )
Под кастом я имел ввиду не тупо каст типа объекта, а какое-то преобразование каких-то значений в строкуNewfag писал(а): 11 ноя 2020, 15:17Там нет каста в строку, есть интерполяция типа в стору, типа был тип String, стала строка "String"
В любитель строгой типизации, и такие вещи мне неприятны

Mono и есть костыль, лагнутый и багнутый
self возвращает себя, так что нормально сделать 1.self, правда хз зачем
С типами еще понятно, потому что нельзя просто заюзать String, это будет как инстанс, а через String.self получаешь сам тип.Где там преобразования значения в строку?NightlyRevenger писал(а): 11 ноя 2020, 15:24Под кастом я имел ввиду не тупо каст типа объекта, а какое-то преобразование каких-то значений в строку
Тип Any можно пытаться преобразовать во что угодно, но например let i = 1; let s = i as? String; не скастишь, компилятор напишет варнинг.Да, DI обычно так и пишутся, есть еще DI от убера, где используется кодогенерация, но эт уже другоеNightlyRevenger писал(а): 11 ноя 2020, 15:24Твоя задачка по сути своей - это написать простенький DI
На клиентской стороне сохраняется вся типизация, а под капотом синьер девелуперы стирают типы и кастят обратно

Загуглил, по отзывам вроде норм сделали
CODE: Выделить всё
let key = "\(Model.self)_\(View.self)"
CODE: Выделить всё
let key = "\(Model.self)_\(View.self)"
Так это не значения, а типы, посмотри что выводится https://paiza.io/projects/pLWq4-giSmq7s ... uage=swift
