我正在尝试在 Kotlin 中编写一个辅助方法,该方法将检查序列中的所有值是否具有相同的值。
感谢问题这里
Kotlin 中使用
Streams
的 Java 风格代码的工作原理如下
fun <T> allEqual(vararg entries: T): Boolean {
val reference = entries[0]
return Arrays.stream(entries)
.allMatch { entry: T -> reference == entry }
}
fun main(args: Array<String>) {
println(allEqual("EUR", "USD", "USD", "EUR")) //returns false
println(allEqual("USD", "USD", "USD", "USD")) //returns true
}
一直在尝试使用
Kotlin
在 sequences
中实现相同的目标,而且我也想保持这个辅助函数的通用性。
fun <T> isAllEqual(vararg entries: T) : Boolean {
val reference = entries[0]
println(reference)
val isEqual: (Array<out T>) -> Boolean = { it == reference }
val seq = listOf(entries).asSequence()
return seq.all{isEqual}
}
fun main(args: Array<String>) {
println(isAllEqual("USD", "USD", "USD", "USD"))
}
我看到以下错误
Type mismatch. Required: (Array<out T>) → Boolean Found: (Array<out T>) → (Array<out T>) → Boolean
任何见解将不胜感激。谢谢。
fun <T> allEqual(vararg entries: T): Boolean = entries.all { it == entries[0] }
我觉得这个代码也不错。
list.distinct().size == 1
我可以像下面一样使用这个代码。
val testList = listOf(1,1,1)
if (testList.distinct().size == 1) {
println("They are all the same!")
}