Scala 如何初始化类,详细信息如下所示

Scala 如何初始化类,详细信息如下所示,scala,Scala,我有一个WhitelistThunk方法,它不接受任何参数并返回一个白名单列表, 如何初始化这个AuthorizedServicesImpl类 sealed trait WhitelistConcern extends Product with Serializable object WhitelistConcern { case class Whitelist(accountId: String, ruleName: String) extends WhitelistConcer

我有一个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]]

WhitelistHelper
是一个
列表[Whitelist]
,但是您需要
()=>列表[Whitelist]
,因此如下更新声明:

lazy val WhitelistHelper = () => new Helper(configuration, Retriever) ...
new AuthorizedServicesImpl(
  Map("whitelist" -> (() => WhitelistHelper)),
)
或者像这样更改类的创建:

lazy val WhitelistHelper = () => new Helper(configuration, Retriever) ...
new AuthorizedServicesImpl(
  Map("whitelist" -> (() => WhitelistHelper)),
)