我正在尝试采用一对数组(StartTime:Int,EndTime:Int)并将它们减少到每个会话的累积时间 .
fun main() {
val sessionsInSecond = listOf<Pair<Int,Int>>(Pair(10,12), Pair(10,15))
val timeSpan: Int = sessionsInSecond.reduce{acc, it -> acc + (it.second - it.first) }
println(timeSpan)
}
这给了我以下错误:
未解决的参考 . 以下候选人都不适用,因为接收器类型不匹配的:@InlineOnly公共内嵌运营商的乐趣BigDecimal.plus(其他:BigDecimal的):在BigDecimal的定义科特林公共@InlineOnly内嵌运营商的乐趣BigInteger.plus(其他:BigInteger的):BigInteger的定义kotlin public operator fun Array.plus(elements:Array):在kotlin.collections中定义的数组public operator fun Array.plus(elements:Collection):在kotlin.collections中定义的数组public operator fun Array.plus(element:Int):Array在kotlin.collections定义公共操作者的乐趣BooleanArray.plus(元件:布尔型):在kotlin.collections定义booleanArray中公共操作者的乐趣BooleanArray.plus(元素:booleanArray中):在booleanArray中公共kotlin.collections操作者的乐趣BooleanArray.plus(元件限定: Collection):在kotlin.collections中定义的BooleanArray公共运算符fun ByteArray.plus(element:Byte):在kotlin.collections中定义的ByteArray公共运算符fun ByteArray.plus(elements:ByteArr ay):在kotlin.collections中定义的ByteArray公共运算符fun ByteArray.plus(elements:Collection):在kotlin.collections中定义的ByteArray @InlineOnly public inline operator fun Char.plus(other:String):在kotlin.text公共运算符中定义的字符串fun CharArray.plus(element:Char):在kotlin.collections中定义的CharArray公共运算符fun CharArray.plus(elements:CharArray):在kotlin.collections中定义的CharArray公共运算符fun CharArray.plus(elements:Collection):在kotlin中定义的CharArray .collections公共运算符fun DoubleArray.plus(element:Double):在kotlin.collections中定义的DoubleArray公共运算符fun DoubleArray.plus(elements:DoubleArray):在kotlin.collections中定义的DoubleArray公共运算符fun DoubleArray.plus(elements:Collection):在kotlin.collections中定义的DoubleArray公共运算符fun FloatArray.plus(element:Float):在kotlin.collections中定义的FloatArray公共运算符fun FloatArray.plus(elements:FloatArray):FloatArray在kotlin.collections公共运算符fun FloatArray.plus(elements:Collection):在kotlin.collections中定义的FloatArray公共运算符fun IntArray.plus(element:Int):在kotlin.collections中定义的IntArray公共运算符fun IntArray.plus(elements:IntArray) :在kotlin.collections中定义的IntArray公共运算符fun IntArray.plus(elements:Collection):在kotlin.collections中定义的IntArray公共运算符fun LongArray.plus(element:Long):在kotlin.collections中定义的LongArray公共运算符fun LongArray.plus( elements:LongArray):在kotlin.collections中定义的LongArray公共运算符fun LongArray.plus(elements:Collection):在kotlin.collections中定义的LongArray公共运算符fun ShortArray.plus(element:Short):在kotlin.collections公共运算符乐趣中定义的ShortArray ShortArray.plus(elements:ShortArray):在kotlin.collections中定义的ShortArray公共运算符fun ShortArray.plus(elements:Collection):在kotlin.collections中定义的ShortArray公共运算符fun St ring?.plus(其他:Any?):在kotlin public operator fun中定义的字符串?.plus(其他:Any?):在kotlin public operator fun中定义的字符串fun.plus(elements:Array):在kotlin中定义的列表 . 集合公共运算符fun.plus(elements:Iterable):在kotlin.collections中定义的列表public operator fun Collection.plus(elements:Sequence):在kotlin.collections中定义的列表public operator fun Collection.plus(element:Int):List在kotlin.collections中定义公共运算符fun Iterable.plus(elements:Array):在kotlin.collections中定义的列表public operator fun Iterable.plus(elements:Iterable):在kotlin.collections中定义的列表public operator fun Iterable.plus(elements:序列):在kotlin.collections中定义的列表公共运算符fun Iterable.plus(element:Int):在kotlin.collections中定义的列表公共运算符fun Map.plus(pairs:Array>):在kotlin.collections中定义的映射public operator fun Map .plus(pair:Pair):在kotlin.collections公共操作中定义的映射或者有趣的Map.plus(对:Iterable>):在kotlin.collections中定义的 Map 公共运算符fun.plus(map:Map):在kotlin.collections中定义的 Map 公共运算符fun Map.plus(pairs:Sequence>):Map在kotlin.collections中定义公共运算符fun.plus(elements:Array):在kotlin.collections中定义的set public operator fun Set.plus(elements:Iterable):在kotlin.collections中定义的set public operator fun Set.plus(elements:序列):在kotlin.collections中定义的set public operator fun Set.plus(element:Int):在kotlin.collections中定义的set public operator fun Sequence.plus(elements:Array):在kotlin.sequences中定义的序列public operator fun Sequence . plus(elements:Iterable):在kotlin.sequences中定义的序列公共运算符乐趣Sequence.plus(元素:序列):在kotlin.sequences中定义的序列public operator fun Sequence.plus(element:Int):在kotlin.sequences中定义的序列
有什么建议怎么解决这个? PS . 这是reduce的练习,所以我不想只是在forEach循环中添加值 .
2 回答
在您的情况下,
acc
in reduce是Pair<Int, Int>
. 你可以使用fold
或类似的东西我猜你的结果应该是
Int
吗?您可以将其更改为fold
,以使其工作轻松:您从
0
开始并继续添加它,直到访问了所有值 . 您的代码中的问题是acc
的类型为Pair<Int,Int>
而不是Int