scala - 如何初始化一个类,详情如下图
问题描述
我有一个不带参数并返回白名单列表的 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),
)
解决方案
WhitelistHelper
是 aList[Whitelist]
但你需要() => List[Whitelist]
,所以更新声明如下:
lazy val WhitelistHelper = () => new Helper(configuration, Retriever) ...
或像这样更改类创建:
new AuthorizedServicesImpl(
Map("whitelist" -> (() => WhitelistHelper)),
)
推荐阅读
- rabbitmq - 在 ubuntu 服务器 18.04 上将 rabbitmq 绑定到 localhost
- python-3.x - 在 conda 中使用 python3 创建的虚拟环境获取 python 2.7
- c - USB HID 空功能报告
- intellij-idea - 在“项目”窗格中预先输入文件名中的“查找下一个”
- sql - 如何让多个 CASE 结果出现在 SQL Server 的同一行中
- arrays - React-Autocomplete 输入项的条件显示
- python - 如何在命令提示符下设置 python 函数的参数
- primefaces - 为什么时间轴内的工具提示在范围更改(Primefaces)后停止工作?
- php - URL 在 htaccess 重写 URL 中重复
- python - 如何根据所有键对字典进行分组(比较字典)?