Size: a a a

Scala User Group

2020 January 10

M

Mikhail in Scala User Group
Oleg ℕizhnik
Устранение энивалов это уже следующий этап, он очень костыльный
Лучше, чем днищенское решение given [A,B]  где B будет использовано в одном из десятка методов. От всего дизайна гивена (не изначальной идеи, а именно реализации) несет смрадом знатно с самого его появления
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
Лучше, чем днищенское решение given [A,B]  где B будет использовано в одном из десятка методов. От всего дизайна гивена (не изначальной идеи, а именно реализации) несет смрадом знатно с самого его появления
Ты про тайпклассы или про расширения?
источник

M

Mikhail in Scala User Group
Oleg ℕizhnik
Ты про тайпклассы или про расширения?
я про синтаксис и текущие ограничения
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
я про синтаксис и текущие ограничения
Синтаксис и ограничения тайпклассов или расширений?
источник

M

Mikhail in Scala User Group
Oleg ℕizhnik
Синтаксис и ограничения тайпклассов или расширений?
Сколько я не видел примеров гивена, от всех попахивало (ну может не все, но 9/10 точно). Но, чтобы конкретнее ответить, нужно доки перечитать)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alexey Otts
Вот да, вроде бы очевидное поведение
Сложно сказать, очевидных проблем не видно, но в скале, где тайп-параметры в одном списке могут ссылаться друг на друга в баундах, могут быть.
Возможно просто мы недооцениваем уровень сложности
источник

AO

Alexey Otts in Scala User Group
Ну дак, если есть ссылка в баундах, то всё ок, потому что то что сверху окажется слева
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alexey Otts
Ну дак, если есть ссылка в баундах, то всё ок, потому что то что сверху окажется слева
Не понял, вот [A <: Foo[B], B <: Bar[A]]
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Я к тому, что чекать это может быть нетривиально
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Думаю, сделают
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Этот кусок (экстеншены) сейчас интенсивно меняется, думаю ещё допилят
источник

AO

Alexey Otts in Scala User Group
Oleg ℕizhnik
Не понял, вот [A <: Foo[B], B <: Bar[A]]
Ну в given ты так не сможешь написать в разных скобках
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alexey Otts
Ну в given ты так не сможешь написать в разных скобках
ну вот получается нужно придумывать более сложный механизм, чем просто конкатенацию
источник

AO

Alexey Otts in Scala User Group
Опять не понял, ты предложенные баунды не можешь записать с given вообще, потому что при объявлении первой группы, еще нет второй группы
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alexey Otts
Опять не понял, ты предложенные баунды не можешь записать с given вообще, потому что при объявлении первой группы, еще нет второй группы
Ну ещё раз, мы обсуждаем - как сделать.
Сейчас я вообще два клоза тайп-параметров воткнуть не могу. Как сделать, чтобы можно было?
источник

AO

Alexey Otts in Scala User Group
Сделать конкатенацию, как это сейчас сделано для implicit class
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alexey Otts
Сделать конкатенацию, как это сейчас сделано для implicit class
Для имплисит класс нет конкатенации
источник

AO

Alexey Otts in Scala User Group
Это как?
источник

AO

Alexey Otts in Scala User Group
Там же создаются методы в singletone объекте
источник

Oℕ

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