Size: a a a

Scala User Group

2020 April 28

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Ну ладно, частично согласен. Но это всё не значит, что про перегрузку следует забыть совсем.
не спорю
источник

M

Mikhail in Scala User Group
Oleg ℕizhnik
с эта преобразованием проблемы, с импортом проблемы, возможные проблемы при ошибках типов, когда использует не ту перегрузку с конверсией
с импортом вобще нет проблем. остальное - ну ты сам такой написал говнокод, перегрузка тут не при чем. если считать нормой, что твой код состоит из семантически одинаковых методов в каждом из которых по 7 параметров - сам дурак)
источник

KC

Kain Crow in Scala User Group
Apache DOG™
потому что назывть две разные вещи одним именем - плохо.
Но у них одинаковая семантика, а что там под капотом это уже не проблемы наименования, наименование это про семантику а не реализацию
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
с импортом вобще нет проблем. остальное - ну ты сам такой написал говнокод, перегрузка тут не при чем. если считать нормой, что твой код состоит из семантически одинаковых методов в каждом из которых по 7 параметров - сам дурак)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
с импортом вобще нет проблем. остальное - ну ты сам такой написал говнокод, перегрузка тут не при чем. если считать нормой, что твой код состоит из семантически одинаковых методов в каждом из которых по 7 параметров - сам дурак)
> с импортом вобще нет проблем

как заимпортить только один метод из двух перегрузок, как переименовать только один при импорте?
источник

M

Mikhail in Scala User Group
Mikhail
с импортом вобще нет проблем. остальное - ну ты сам такой написал говнокод, перегрузка тут не при чем. если считать нормой, что твой код состоит из семантически одинаковых методов в каждом из которых по 7 параметров - сам дурак)
я даже без перегрузки от такого кода выть начну
источник

AD

Apache DOG™ in Scala User Group
Kain Crow
Но у них одинаковая семантика, а что там под капотом это уже не проблемы наименования, наименование это про семантику а не реализацию
в примере - разная семантика
источник

KC

Kain Crow in Scala User Group
Apache DOG™
в примере - разная семантика
Как это
Берет какую-то сущность и выдает ее стринг-представление
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Kain Crow
Как это
Берет какую-то сущность и выдает ее стринг-представление
toString
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Если семантика одинаковая - вероятно это должна быть абстракция. Перегрузка - не абстракция
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Это просто два метода с одним именем
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Как сказал Юрий место перегрузкам - в ДСЛках особого типа, где вообще не предполагается, что код будет использоваться каким-то другим способом, кроме того, который описан в доках
источник

M

Mikhail in Scala User Group
Oleg ℕizhnik
> с импортом вобще нет проблем

как заимпортить только один метод из двух перегрузок, как переименовать только один при импорте?
не нужно импортить только один метод. ты импортишь семантику.
если ты импортишь не пересекающиеся типы - вобще нет проблем (разве что у скалака - он же там не умеет резолвить в полный путь). а если тебе надо зашейдить S1.parse(s:String), потому что у тебя есть S2.parse(s:String) - так будь добр и напиши S2.parse(string), а не шейди все подряд. Это уберет всякие неоднозначности. К тому же это скалак должен стать слегка умнее и если ты указал val s2:S2 = parse(string) - он и должен опять таки в полный путь зарезолвить, потому что непересекающиеся множества не порождают неоднозначностей.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
не нужно импортить только один метод. ты импортишь семантику.
если ты импортишь не пересекающиеся типы - вобще нет проблем (разве что у скалака - он же там не умеет резолвить в полный путь). а если тебе надо зашейдить S1.parse(s:String), потому что у тебя есть S2.parse(s:String) - так будь добр и напиши S2.parse(string), а не шейди все подряд. Это уберет всякие неоднозначности. К тому же это скалак должен стать слегка умнее и если ты указал val s2:S2 = parse(string) - он и должен опять таки в полный путь зарезолвить, потому что непересекающиеся множества не порождают неоднозначностей.
если я импорчу ActorSystem.create я не семантику импорчу, я импорчу кучу методов с разным смыслом и одним именем
источник

Oℕ

Oleg ℕizhnik in Scala User Group
и так же касается любой перегрузки. Есть примерно ноль примеров, где перегрузка означает "семантику"
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Все ООП челики выделяют семантику в интерфейсы, все ФП челики - в тайпклассы.
источник

M

Mikhail in Scala User Group
Oleg ℕizhnik
если я импорчу ActorSystem.create я не семантику импорчу, я импорчу кучу методов с разным смыслом и одним именем
сколько у тебя вызовов - 1 на файл, десяток на большой проект? Ну и напиши ActorSystem.create - избавь читающего от двусмысленности, что за креате там стоит. а если есть
import ActorSystem.create 
val system:ActorSystem = create

так какая мне разница, сколько там методов заимпортилось? семантически - один метод, который создает акторсистему - усе
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
сколько у тебя вызовов - 1 на файл, десяток на большой проект? Ну и напиши ActorSystem.create - избавь читающего от двусмысленности, что за креате там стоит. а если есть
import ActorSystem.create 
val system:ActorSystem = create

так какая мне разница, сколько там методов заимпортилось? семантически - один метод, который создает акторсистему - усе
Эта бестолковая беседа началась с того, что ты предлагает внести неоднозначность, получив краткость https://t.me/scala_ru/272644

А теперь предлагаешь избавиться от неоднозначности, опять повторив имя типа, которое и так будет присутствовать в коде в выражении.
источник

NV

Nikita Vilunov in Scala User Group
Oleg ℕizhnik
Все ООП челики выделяют семантику в интерфейсы, все ФП челики - в тайпклассы.
Какой-нибудь Raise или ContextShift — это тайпкласс или всё-таки такой же интерфейс? ФП челики часто выделяют семантику в такие же интерфейсы, которые не являются тайпклассами
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Мало того, это замечание никак не относится к заявлениям о том, что перегрузка - это семантика
источник