我在Kotlin中实现了以下枚举
enum class PlaylistAction(val playlistFilter:(Playlist) -> Boolean) {
PLAY ({ it.playListOwner.Id == "xxx" }),
SAVE({true})
}
我想用它来过滤这样的List:
var test = playlists.filter { playlistActionType.playlistFilter}
其中playlistActionType的类型为 PlaylistAction
,播放列表为 List<Playlist>
But 我收到以下错误:
错误:(122,34)类型不匹配:推断类型是(播放列表) - >(播放列表) - >布尔但是(播放列表) - >布尔值是预期的
为什么推断类型(播放列表) - >(播放列表) - >布尔值而不是(播放列表) - >布尔值?
2 回答
通过将您的谓词放在
{}
中,您实际上正在创建另一个返回谓词的lambda,这就是为什么您最终得到:(Playlist) -> (Playlist) -> Boolean
而不是(Playlist) -> Boolean
.使用普通括号应该可以做到这一点:
将工作 . 您正在将函数传递给
filter
,不需要额外的lambda .