Скала и неявный импорт? - PullRequest
2 голосов
/ 21 марта 2019

Прежде всего я должен сказать, что у меня нет такого опыта работы со Scala, и в последнее время я прочитал какой-то фрагмент кода, который я не понимаю, как он работает.

В этом примере кода использовались Future иобычно им всем нужно scala.concurrent.ExecutionContext.Implicits.global, но это не было объявлено нигде в коде проекта.Когда я пытаюсь использовать Future в моем проекте IntelliJ, он жалуется, что мне нужно объявить где-то ExecutionContext ...

То же самое для import scala.collection.JavaConverters._.В примере кода использовалось asScala все время без импорта конвертеров ...

Есть ли способ настроить такие вещи в Scala (или может быть трюком в IntelliJ) ...

Ответы [ 2 ]

4 голосов
/ 21 марта 2019

Я не думаю, что это связано с IntelliJ.

Одним из возможных объяснений было бы то, что код, на который вы ссылаетесь, объявлял эти следствия в некоторой глобально импортированной области, например package object.В этом случае любой член пакета увидит последствия, объявленные в этом объекте.

4 голосов
/ 21 марта 2019

В Intellij вы можете использовать ярлык Ctrl+Shift+Alt++ (неявные подсказки), чтобы узнать, какие последствия используются (и какие отсутствуют) в вашем коде (они отображаются светло-серым цветом, и вы можете CTRL+click для них) , Смотри: https://www.jetbrains.com/help/idea/edit-scala-code.html#scala_hints

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

Для вашего случая: попробуйте использовать import scala.concurrent.ExecutionContext.Implicits.global в файлах, которые вам нужны, неявные ExecutionContext.

Есть ли способ настроить такие вещи для широкого проекта в Scala (или может быть хитростью в IntelliJ) ...

Нет, вы должны определить последствия где-то в области видимости или импортировать их. (Сопутствующие объекты также применимы). Прочитайте это для более подробного объяснения: https://docs.scala -lang.org / tour / implicit-parameters.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...