Вам нужно вызвать "thunk", чтобы получить значение. Предполагая, что WhiteList.get
возвращает Option
, оно выглядит следующим образом:
override def getWhitelist = {
Whitelist.get("string").toList.flatMap(_())
}
_()
является сокращением для f => f()
, так что это функция, которая вызывает значение, которое ей присвоено. , который в данном случае имеет тип WhitelistRuleThunk
. Так что это вызывает thunk, который возвращает List[WhiteListRule]
.
flatMap
требуется, поскольку существует List
из WhitelistRuleThunk
с, и каждое правило возвращает List[WhiteListRule]
, поэтому простое map
даст List[List[WhiteListRule]]
.