Size: a a a

2019 January 31

DK

Dmitrii Kartashev in Канада IT
Art
Можешь object тогда использовать в типизированном, если тебе все равно что за объект
Без cast не прокатит же?
источник

IC

Ilya Chernov in Канада IT
Dmitrii Kartashev
У нетипизированных есть преимущества :) Например можно написать только одну функцию для обработки всяких структур данных.

Типа, void ProcessData(Data){
return Data.ItemName
}

А уж что там за Data - словарь, объект, строка таблицы :)
Какое же это преимущество? Видимо, я чего-то не понимаю :)

Но если копнуть поглубже (в параметрический и специальный полиморфизм), выяснится, что это вообще в общем случае невозможно. Т. е. такая конструкция – это иллюзия, что все работает, а на самом деле она в лучшем случае для разных данных вернет разные ответы и непонятно потом, что из этого intentional, что баг, etc. Ад, в общем, imo
источник

A

Art in Канада IT
Dmitrii Kartashev
Без cast не прокатит же?
Эммм. Ты внутри то что будешь делать с произвольным объектом?
источник

D

Denys in Канада IT
Art
Можешь object тогда использовать в типизированном, если тебе все равно что за объект
dynamic в шарпе. Я использовал за всё время примерно один раз, да и то из любопытства и лени в одном единственном месте (смущаясь на тему того что всё же говнокод-с)
источник

A

Art in Канада IT
Denys
dynamic в шарпе. Я использовал за всё время примерно один раз, да и то из любопытства и лени в одном единственном месте (смущаясь на тему того что всё же говнокод-с)
В java том же не уверен, что есть аналог dynamic. Хотя может и есть
источник

DK

Dmitrii Kartashev in Канада IT
Динамик больше на правду похоже.
С object же можно производить только общие операции для всех обжектов. То что внутри обжект - это условный словарь не даст тебе с ним как со словарем работать, пока тип не приведешь. Ну, может от языка зависит, конечно
источник

D

Denys in Канада IT
Art
В java том же не уверен, что есть аналог dynamic. Хотя может и есть
скажем так, это далеко не та конструкция языка из шарпа за которой я бы скучал при переходе на другой язык :)
источник

D

Denys in Канада IT
вот в питоне один сраный динамик и я от этого скорее печалюсь
источник

A

Art in Канада IT
Dmitrii Kartashev
Динамик больше на правду похоже.
С object же можно производить только общие операции для всех обжектов. То что внутри обжект - это условный словарь не даст тебе с ним как со словарем работать, пока тип не приведешь. Ну, может от языка зависит, конечно
Ну приведи пример, когда тебе в функцию нужно передавать произвольный объект. Что ты с этим объектом там делать будешь, если не знаешь что это за объект?
источник

SG

Stan Glickman 🅴 in Канада IT
Art
Ну приведи пример, когда тебе в функцию нужно передавать произвольный объект. Что ты с этим объектом там делать будешь, если не знаешь что это за объект?
источник

SG

Stan Glickman 🅴 in Канада IT
Есть пример
источник

V

Vsevolod in Канада IT
Art
Ну приведи пример, когда тебе в функцию нужно передавать произвольный объект. Что ты с этим объектом там делать будешь, если не знаешь что это за объект?
Я бы в питоне просто то что хочу сделать в try ... except бы обернул и все. Если сработало значит норм, нет - ошибка.
источник

VK

Vasily Khoruzhick in Канада IT
Denys
Забавно, коллега наконец-то получил ПР (приехал примерно на год раньше нас, но по рабочей визе) и уходит в гугл. Пообщаюсь с ним в обед, но как я понял - тот ещё квест
монреаль?
источник

IC

Ilya Chernov in Канада IT
Art
Ну приведи пример, когда тебе в функцию нужно передавать произвольный объект. Что ты с этим объектом там делать будешь, если не знаешь что это за объект?
Правильно, с ним можно сделать только одно – вернуть его без изменений. Поэтому возможна только одна такая фунцкия – identity
источник

A

Art in Канада IT
Denys
dynamic в шарпе. Я использовал за всё время примерно один раз, да и то из любопытства и лени в одном единственном месте (смущаясь на тему того что всё же говнокод-с)
Можно еще reflection использовать, но он медленный как черепаха.
источник

DK

Dmitrii Kartashev in Канада IT
Art
Ну приведи пример, когда тебе в функцию нужно передавать произвольный объект. Что ты с этим объектом там делать будешь, если не знаешь что это за объект?
Ну, например пишу я клиент REST API. Вот этого конкретно: https://api.youneedabudget.com/v1

И в ответе у меня всегда верхний "Слой" - это обертка, где есть одно поле - data
Соответственно со строгой типизацией мне надо иметь под каждый ответ класс AnswerWrapper где поле data имеет тип соответствующего Answer.

С динамической у меня был бы один класс Wrapper, а в data лежали бы данные любого типа.

Профит - на 15 классов меньше.
Ну, точнее в итоге wrapper у меня сделан через AnswerWrapper<T> (generic), но прописывать чему равно T каждый раз же все равно приходится. При динамическом и так нормально было бы
источник

D

Denys in Канада IT
Vasily Khoruzhick
монреаль?
Ватерлоо. Я пообщался с ним, кстати. З.п. не то чтобы сверхбольшая, в каком-нибудь Торонто и без гугля можно получить такую или даже больше.
источник

D

Denys in Канада IT
Ilya Chernov
Правильно, с ним можно сделать только одно – вернуть его без изменений. Поэтому возможна только одна такая фунцкия – identity
о, видно функциональщика :)
источник

D

Denys in Канада IT
Art
Можно еще reflection использовать, но он медленный как черепаха.
и страшный как война. Я даже в задачах который вроде как на reflection стоит делать старался обойтись Expression. Типизированный генератор url - это прикольно :)
источник

D

Denys in Канада IT
Dmitrii Kartashev
Ну, например пишу я клиент REST API. Вот этого конкретно: https://api.youneedabudget.com/v1

И в ответе у меня всегда верхний "Слой" - это обертка, где есть одно поле - data
Соответственно со строгой типизацией мне надо иметь под каждый ответ класс AnswerWrapper где поле data имеет тип соответствующего Answer.

С динамической у меня был бы один класс Wrapper, а в data лежали бы данные любого типа.

Профит - на 15 классов меньше.
Ну, точнее в итоге wrapper у меня сделан через AnswerWrapper<T> (generic), но прописывать чему равно T каждый раз же все равно приходится. При динамическом и так нормально было бы
а чем интерфейс не годится?
источник