Я видел поведение List, упомянутое докладчиком в Scala видео лекции. Потом подумал, что попробую с картой. Кроме того, видя такое же разрешение типов через / через другой тип.
Мне любопытно, как работает это разрешение? Было ли это задумано со стороны команды разработчиков языка / компилятора Scala? Заинтересовала появившаяся причуда? Будет ли это работать в Dotty так же, но с другим синтаксисом? Есть ли что-то особенное в том, как определены List и Map, в котором говорится, что в основном я могу работать как функция и заменять один тип на другой?
Вот пример кода, чтобы проиллюстрировать, о чем я говорю:
// I'm being verbose to stress the types
implicit val theList: List[String] = List("zero", "one", "two", "three")
implicit val theMap: Map[Double, String] = Map(1.1 -> "first", 2.1 -> "second")
def doExample(v: String): Unit = {
println(v)
}
doExample(1)
// prints "one"
doExample(1.1)
// prints "first"