как инициализировать класс, подробно показано ниже - PullRequest
1 голос
/ 13 марта 2020

У меня есть метод WhitelistThunk, который не принимает параметров и возвращает список белых списков, как инициализировать этот класс AuthorizedServicesImpl?

sealed trait WhitelistConcern extends Product with Serializable

  object WhitelistConcern {
    case class Whitelist(accountId: String, ruleName: String) extends WhitelistConcern
    case class whi(accountId: String) extends WhitelistConcern
  }

  type WhitelistThunk = () => List[Whitelist]

class AuthorizedServicesImpl(
 draxWhitelist : => Map[String, WhitelistThunk]){}

Это может преобразовывать тип из списка строк в список белых списков.

lazy val pattrn = "([^:]*):([^:]*)".r
  lazy val patt = "([^:]*)".r
  lazy val sdcWhitelistHelper = () => new SDCWhitelistHelper(configuration, sdcRetriever).whitelistSentToDrax.collect{
    case pattrn(accnt, rule) => Whitelist(accnt, rule)

  }

  lazy val sdcWhitelistHelper1 = () => new SDCWhitelistHelper(configuration, sdcRetriever).whitelistSentToDrax.collect{
    case patt(accnt) => whi(accnt)
  }

Это то, что я сейчас делаю, но ошибка

Required scala.Predef.Map [scala.Predef.String, WhitelistThunk]
Found scala.collection.immutable.Map[java.lang.String, List[Whitelist]]
 private lazy val authorizedServices =
    new AuthorizedServicesImpl(
      Map("whitelist" -> WhitelistHelper),
    )

1 Ответ

1 голос
/ 13 марта 2020

WhitelistHelper - это List[Whitelist], но вам нужно () => List[Whitelist], поэтому обновите объявление следующим образом:

lazy val WhitelistHelper = () => new Helper(configuration, Retriever) ...

или измените создание класса следующим образом:

new AuthorizedServicesImpl(
  Map("whitelist" -> (() => WhitelistHelper)),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...