В Scala как найти эффективные неявные методы, объявления и преобразования во время выполнения - PullRequest
0 голосов
/ 06 января 2019

Пытаясь понять akka marshalling / unmarshalling и обнаружил много скрытой магии скалы, которая происходит на заднем плане и под капотом.

Вопрос: Есть ли способ найти, какие неявные конструкции эффективны во время выполнения. Вещи, которые было бы полезно знать: - какие неявные объявления и преобразования эффективны - где они объявлены

Что я думаю, плагин IDE для этого может быть? Для использования при отладке кода?

Я думаю, что это поможет понять akka marshalling / unmarshalling, но также будет полезно в целом, когда используются сложные неявные функции.

1 Ответ

0 голосов
/ 06 января 2019

Последствия выбираются во время компиляции.

С -Xlog-implicit-conversions:

scala 2.13.0-M5> "42".toInt
                 ^
                 applied implicit conversion from String("42") to ?{def toInt: ?} = implicit def augmentString(x: String): scala.collection.StringOps
res0: Int = 42

scala 2.13.0-M5> "42".toInt //print<TAB>
   scala.Predef.augmentString("42").toInt // : Int

-Xlog-implicits объясняет, когда последствия не применяются.

У IntelliJ есть "показать имплициты".

...