Вопросы по теме 'implicits'

Типовые классы в Scala
Имея опыт работы с Haskell, я сейчас пытаюсь познакомиться со Scala. Я столкнулся с некоторыми проблемами, пытаясь перевести небольшой расширяемый язык выражений из Haskell в Scala. Основная проблема написания типа данных, который может быть...
1617 просмотров

Как реализовать промежуточные типы для неявных методов?
Предположим, я хочу предложить метод foo для существующего типа A вне моего контроля. Насколько я знаю, канонический способ сделать это в Scala — реализовать неявное преобразование из A в некоторый тип, реализующий foo . Сейчас я в основном...
328 просмотров
schedule 11.04.2022

Именованные аргументы Scala и аргументы по умолчанию в сочетании с неявными параметрами
Рассмотрим следующее: def f(implicit a: String, y: Int = 0) = a + ": " + y implicit val s = "size" println(f(y = 2)) Последнее выражение вызывает следующую ошибку: not enough arguments for method f: (implicit a: String, implicit y:...
1240 просмотров

Лучшее обходное решение для неявных и проблем с заказом при сериализации в JSON с помощью Spray?
Я использую библиотеку Spray JSON для сериализации наших классов case в JSON. Проблема в том, что у нас есть некоторые взаимно рекурсивные определения. Я работаю по примеру сериализации запечатанных признаков здесь:...
566 просмотров
schedule 02.02.2023

Найти неявное значение по члену абстрактного типа
С таким типом, как trait A[T] , найти неявное в области видимости просто implicitly[A[SomeType]] Можно ли это сделать, и если да, то как это сделать, если параметр типа заменяется членом абстрактного типа, как в trait A { type T } ?
243 просмотров
schedule 26.09.2022

Как компилятор Scala синтезирует неявные доказательства с помощью `‹:‹`?
Учитывая этот (по общему признанию надуманный) фрагмент кода в Scala: object Main extends App { class X { def foo = 1 } def f[A](value: A)(implicit ev: A <:< X) = { value.foo } println(f(new X())) } Что делает компилятор...
144 просмотров
schedule 28.02.2023

Неявные преобразования в универсальной функции
Мне нужно преобразовать из Any в базовые числовые типы, такие как Int или Double. Я реализовал эти преобразования с помощью имплицитов Scala. Мой код похож на этот: def convertAny[T](any: Any)(implicit run: Any => Option[T]) =...
43 просмотров

Почему я получаю расходящуюся ошибку неявного расширения при попытке отсортировать экземпляры упорядоченного класса?
Вопросов по теме много, но после часа чтения так и не могу понять, что я делаю не так. Вот минимальный пример кода, который у меня есть (Scala 2.11): object Anomalies { sealed abstract class AnomalyType(val priority: Int)...
85 просмотров
schedule 16.06.2022