Найти все последствия - PullRequest
       1

Найти все последствия

17 голосов
/ 31 декабря 2011

Есть ли в Scala способ найти и отобразить все варианты использования имплицитов в моем коде или выполнить компиляцию без включенных имплицитов (поэтому я получаю ошибки компиляции)? Я надеюсь определить места, где я непреднамеренно выделяю дополнительную память во внутренних циклах.

Ответы [ 2 ]

18 голосов
/ 31 декабря 2011

Вы можете использовать опцию -Xprint:typer и посмотреть, как проверяются набранные внутренние циклы. Неявные вызовы появятся в печатном исходном коде. Возможно, вам придется направить вывод в файл, чтобы вы могли искать интересные разделы.

Кроме того, в ночных ночных средах Scala Eclipse по адресу http://scala -ide.org / download / nightly.html есть неявная функция отображения. Вы должны включить его в Предпочтениях , Scala , Implicits section.

Двойные стрелки на левом поле показывают, что используется неявное значение:

enter image description here

При наведении курсора отображаются детали:

enter image description here

Плагин IDEA scala также может показывать неявные преобразования с подчеркиванием, см. Тот же фрагмент кода:

enter image description here

Он также должен показывать, какой из них используется с помощью комбинации клавиш CTRL-SHIFT-Q, но у меня был меньший успех ...

11 голосов
/ 03 января 2012

По состоянию на вчерашний день (это просто совпадение) есть -Xlog-неявные-преобразования.

scalac -Xlog-implicit-conversions -d /tmp /scala/trunk/src/library/scala/util/Random.scala 
/scala/trunk/src/library/scala/util/Random.scala:115: applied implicit conversion from Int to ?{val to: ?} = implicit def intWrapper(x: Int): scala.runtime.RichInt
    for (n <- buf.length to 2 by -1) {
                  ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...