Как неявные типы в Scala работают со ссылкой на этот https://youtu.be/hC4gGCD3vlY?t=263

Как неявные типы в Scala работают со ссылкой на этот https://youtu.be/hC4gGCD3vlY?t=263.

Также я не понял, почему он упоминает, что объект convertAtoB является статическим.

1 ответ

Решение

Давайте начнем scala REPL с implicitConversion флаг.

$ scala -language:implicitConversions
Welcome to Scala 2.12.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.

Скажем, вы хотите, чтобы все целые числа были обернуты внутри числовой строки как "Number(input)",

Теперь вместо того, чтобы каждый раз вызывать функцию для преобразования int в требуемый тип, вы можете определить неявный метод, который однажды увидит ваш ввод и вывод, как определено в вашем неявном преобразователе, сделает это за вас.

пример,

scala> object NumberToString { implicit def wrapWithNumber(n: Int): String = s"Number(${n})" }
defined object NumberToString

Обратите внимание, что NumberToString это класс Singleton или что static класс находится в мире Java.

scala> import NumberToString._
import NumberToString._

Теперь, если вы просто определите переменную типа Int, не будет никакого преобразования, потому что оно уже имеет тип Int и компилятор счастлив.

scala> val asItis = 1000
asItis: Int = 1000

Но если вы зададите ему другой тип, компилятор будет искать неявные методы и выбирает тот, который соответствует.

scala> val richInt: String = 1000
richInt: String = Number(1000)
Другие вопросы по тегам