Как увидеть все импликации и их типы, доступные в любой кодовой точке? - PullRequest
7 голосов
/ 08 мая 2019

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

@Singleton
class Application @Inject() (implicit
                             val verifier: RecaptchaVerifier,
                             config: Configuration,
                             env: Environment,
                             mat: Materializer,
                             indexView: views.html.index,
                             restrictedView: views.html.restricted,
                             profileView: views.html.profile,
                             loginView: views.html.login,
                             restrictedForbidCookieView: views.html.restricted_forbid_cookie,
                             reloginView: views.html.relogin,
                             googleAuthenticationView: views.html.google_authentication,
                             signupView: views.html.signup,
                             widgetHelper: WidgetHelper,
                             webJarUtil: WebJarsUtil,
                             deadbolt: DeadboltActions,
                             auth: PlayAuthenticate,
                             userService: UserService,
                             authProvider: MyAuthProvider,
                             formContext: FormContext,
                             googleAuthService: GoogleAuthService,
                             recaptchaWidget: recaptcha.recaptchaWidget) extends InjectedController with I18nSupport {
  import scala.concurrent._
  import ExecutionContext.Implicits.global

  //-------------------------------------------------------------------
  // public
  //-------------------------------------------------------------------
  def index =
    TryCookieAuthAction { implicit jContext =>
      deadbolt.WithAuthRequest()() { implicit request =>
        Future {
          implicit val lang = request.acceptLanguages.head
          Ok(indexView(userService))
        }
      }
    }

Мне известны Идеи Ctrl + Shift + Alt + + для включения неявных подсказок, но, к сожалению, он показывает только неявные аргументы, требуемые функцией, а не доступные импликации.Например, я хотел бы знать, есть ли доступный неявный lang: Lang и его тип, так как я работаю над смешанным проектом Java и Scala для Play, этот lang может превратиться в тип play.i18n.Lang длябывший и play.api.i18n.Lang для позднего.

1 Ответ

5 голосов
/ 08 мая 2019

То, что вы ищете, вероятно, ctrl + shift + P . Вам нужно навести курсор на место, которое нужно скрытно, а затем нажать эту комбинацию. Он даже показывает, есть ли у вас конфликтующие последствия:

InteliJ implicits

Пожалуйста, проверьте также страницу для получения дополнительных советов по работе с имплицитами.

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