Kotlin lambdas与类型推断
我在Kotlin中实现了以下枚举Kotlin lambdas与类型推断,lambda,kotlin,type-inference,predicate,Lambda,Kotlin,Type Inference,Predicate,我在Kotlin中实现了以下枚举 enum class PlaylistAction(val playlistFilter:(Playlist) -> Boolean) { PLAY ({ it.playListOwner.Id == "xxx" }), SAVE({true}) } 我想用它来过滤如下列表: var test = playlists.filter { playlistActionType.playlistFilter} 其中playlactiontyp
enum class PlaylistAction(val playlistFilter:(Playlist) -> Boolean) {
PLAY ({ it.playListOwner.Id == "xxx" }),
SAVE({true})
}
我想用它来过滤如下列表:
var test = playlists.filter { playlistActionType.playlistFilter}
其中playlactiontype为类型playlaction
,playlists为List
但是我得到以下错误:
错误:(122,34)类型不匹配:推断的类型为(播放列表)->(播放列表)->布尔值,但应为(播放列表)->布尔值
为什么推断的类型(播放列表)->(播放列表)->是布尔型而不是(播放列表)->布尔型
var test = playlists.filter(playlistActionType.playlistFilter)
var test = playlists.filter(playlistActionType.playlistFilter)
会有用的。您正在将一个函数传递给
过滤器
,不需要额外的lambda 通过将谓词放入{}
中,实际上您正在创建另一个lambda,该lambda返回谓词,这就是为什么您最终得到:(Playlist)->(Playlist)->Boolean
而不是(Playlist)->Boolean
使用普通括号应该可以做到: