AutoRefineV не получает явный вывод из карты? - PullRequest
1 голос
/ 22 мая 2019

У меня есть уточненное определение типа:

type D = String Refined Regex "(a|b)"

Я могу использовать уточнение в одной строке, выражающей значение, но по какой-то причине autoRefineV не поднимает его при использовании в контексте карты, даже если тип явный. Например:

import eu.timepit.refined.auto.autoRefineV
val test1: D = "a" // this is fine
val test2 = Map[D, String]("a" -> "test") // this fails
val test3: Map[D, String] = Map("a" -> "test") // this also fails
val test4 = Map(test1 -> "test") // this works!

Я получаю ошибку:

found : (String, String)
required : (D, String)

Так почему-то значение не преобразуется автоматически из строки в тип D? Нужно ли определять уточненный объект типа Map[D, String]? Нужно ли использовать свидетеля (которого я понятия не имею, как использовать)?

1 Ответ

3 голосов
/ 22 мая 2019

У вас есть неявное преобразование из String в D, но для определения test2/3 потребуется одно из (String, String) в (D, String), которого не существует.

val test5 = Map(("a": D) -> "test")

работать, если вы просто хотите написать это в одну строку.

...