我正在尝试使用泛型将我的两个函数合并为一个。
fun <T> List<T>.toElementOrSize1(keySelector: (T) -> String): String {
val key = keySelector(first())
return if (all { keySelector(it) == key }) key else "size = $size"
}
fun <T> List<T>.toElementOrSize2(keySelector: (T) -> String?): String? {
val key = keySelector(first())
return if (all { keySelector(it) == key }) key else "size = $size"
}
Run Code Online (Sandbox Code Playgroud)
我可以这样写:
fun <T, K : String?> List<T>.toElementOrSize(keySelector: (T) -> K): K {
val key = keySelector(first())
return if (all { keySelector(it) == key }) {
key
} …Run Code Online (Sandbox Code Playgroud)