Описание тега implicits

Anything related to Scala implicit parameters or conversions
2 ответа

Две, казалось бы, идентичные семантики: одна неявно связывается, другая нет

Здравствуйте: я недавно изучал Scala (мой опыт работы в основном с C++ шаблонами), и я столкнулся с тем, чего в настоящее время я не понимаю в Scala, и это сводит меня с ума.:( (Кроме того, это мой первый пост в Stackru, где я заметил, что большинст…
30 май '11 в 08:12
1 ответ

Делает ли компилятор scala что-нибудь для оптимизации неявных классов?

Скажем, у нас есть неявный класс, такой как: implicit class RichString(str: String) { def sayHello(): String = s"Hello, ${str}!" } Мы можем использовать метод sayHello, как если бы он был определен в классе String "World".sayHello Оптимизирует ли ко…
10 апр '15 в 05:29
1 ответ

В чем преимущество Scala с привязкой к контексту над обычным параметром?

Я читаю о границах контекста и неявных параметрах, которые должны работать как классы типов. Примеры, которые я часто вижу Ordering[T], Что-то вроде: foo[T : Ordering](a: T, b: T) который является сахаром для foo[T](a: T, b: T)(implicit ord: Orderin…
06 мар '14 в 22:35
2 ответа

Расширенные ограничения типов в Scala - логические операторы и неявные параметры

У меня есть следующий код, который работает хорошо. package com.andrew object ExperimentWithTypeConstraints { def union[T](t: T)(implicit c: (T =:= String)) = t match { case s: String => println(s"Some nice string: $s") } def main(args: Array[Str…
1 ответ

Бесконечная рекурсия с Shapeless select[U]

У меня была отличная идея (ну, это спорный вопрос, но, скажем, у меня была идея) для создания инъекции неявную зависимость проще в Scala. У меня проблема в том, что если вы вызываете какие-либо методы, требующие неявной зависимости, вы также должны …
02 июл '15 в 05:40
2 ответа

Тестирование двух бесформенных типов HList в scala на эквивалентность через неявные

Мне интересно проверить, являются ли две гетерогенные записи HList "эквивалентными"; то есть они имеют одинаковые пары ключ / вал, но не обязательно в том же порядке. Есть предопределенный предикат типа, который делает то, что EquivHLists делает во …
21 ноя '17 в 19:24
1 ответ

Почему неявный объект имеет приоритет над val в Scala 2.13-M5?

Мне интересно, является ли это ошибкой или ожидаемым поведением в Scala 2.13-M5. Следующий фрагмент компилирует и выводит "объект в объекте пакета": package object test { implicit val a: TS = new TS("val in package object") implicit object b extends…
30 авг '18 в 18:18
1 ответ

Обходной путь для импорта искровых последствий везде

Я новичок в Spark 2.0 и использую наборы данных в нашей базе кода. Я как бы замечаю, что мне нужно import spark.implicits._ везде в нашем коде. Например: File A class A { def job(spark: SparkSession) = { import spark.implcits._ //create dataset ds v…
1 ответ

Проблемы с выводом типа скалы на работу

Общая цель: Предположим, к примеру, я хочу разработать очень подключаемый трекер проблем. Его базовая реализация может поддерживать только идентификатор заявки и описание. Другие расширения могут добавлять поддержку для других полей, но эти поля мог…
10 июл '12 в 06:53
1 ответ

Составление функций уровня типа с неявными свидетелями

Я экспериментирую с довольно сложными вычислениями на уровне типов. Там у меня есть несколько типов тегов (скажем, A, B, а также C) и работающие над ними функции, которые представлены неявными свидетелями с зависимыми от пути типами результатов: cla…
1 ответ

Неявная передача значений из содержащих классов в поля классов?

Рассмотрим класс школы. Если бы мы добавили поле "Ученик" в школьный класс, можно ли было бы просто передать ссылку на объект "Школьник" в объект "Ученик". Так что вместо того, чтобы делать class School() { val pupil:Pupil = new Pupil(this) } Мы мог…
11 апр '17 в 15:32
2 ответа

Неявный поиск для Typeclass of None не совместим с Contravariant Typeclass of Option

Я не получаю следующий код для компиляции, и мне любопытно, что я сделал неправильно. Я определил Contravariant Jsonwriter Trait и функцию, принимающую неявных авторов: trait JsonWriter[-A] { def write(value: A): Json } object Json { def toJson[A](v…
09 авг '18 в 06:29
1 ответ

Неявные параметры нарушают вывод типа или вывода не хватает для их разрешения?

Вывод типа работает нормально в этом примере, пока я не добавлю неявное доказательство упорядочения. Правила вывода типов (слева направо и через списки параметров), похоже, удовлетворены, но есть что-то в отношении неявного, которое нарушает его. ca…
14 дек '14 в 09:39
3 ответа

В Scala, как мне сказать абстрактному базовому классу, что параметр типа T поддерживает неявное преобразование из Int (или Float, или...)?

У меня возникают трудности при переходе из мира C++/Templates в scala. Я привык иметь возможность использовать любую операцию с параметром шаблона T, которую я хочу, при условии, что все, что я использую для создания экземпляра T с, поддерживает эти…
12 фев '12 в 01:45
2 ответа

Неявное преобразование scala не работает

Я обнаружил странное явление: class A { val dual: A = this object T { implicit def doubleDual(t: T): dual.dual.T = t.asInstanceOf[dual.dual.T] implicit def justForTest(t: T): Int = 777 } class T } val a = new A val t = new a.T // import a.T._ val x:…
09 июн '18 в 12:11
1 ответ

Сворачивание по предоставленному HList

Я осознаю, что моей проблемой может быть "проблема XY", поэтому вот краткое резюме того, чего я хочу достичь. Допустим, у меня есть следующий тип: trait Provider[T] { def provide: T } Я хочу иметь возможность объединить несколько значений, предостав…
18 май '18 в 16:42
2 ответа

Как выразить (неявный conv: String => A) в качестве границы представления

Я спрашиваю себя, какой будет точка зрения, эквивалентная (implicit conv: String => A) Моей первой попыткой было просто объявить параметр типа A следующее: [String <% A] Но компилятор Scala жалуется на "not found: type A". Какие-либо предложен…
2 ответа

Scala: Как импорт может предотвратить поиск неявного значения?

Я мог бы использовать предложения отладки неявного: Я хочу использовать неявное, x: type T trait HasT { implicit def x: T = ... } Но мне также нужен импорт подстановочных знаков из некоторого пакета foo, Я попробовал два разных способа введения обои…
20 ноя '16 в 21:43
1 ответ

Почему неявное разрешение Scala не удается для перегруженного метода с параметром типа?

Первый пример успешно находит неявное преобразование в метод foo(String)Однако, как только я добавлю параметр типа (см. fails) компиляция больше не разрешает это: object works { class A { def foo(): String = ??? } implicit class PimpedA(a: A) { def …
16 окт '15 в 04:33
0 ответов

Избегайте неявных параметров, превращающихся в неявные преобразования

Предполагаемый вывод следующего кода является цифрой, 0, object Bad extends App { implicit val massTable: Map[String, Int] = Map("H" -> 1, "He" -> 4, "O" -> 16) Implementation.doWork() } object Implementation { def doWork()(implicit massTab…