首页 > 解决方案 > Kotlin:为可变参数和集合定义函数

问题描述

举例来说,我想编写自己的sum函数,它可以采用整数或可变参数整数的集合,如下所示:

fun sum(ints: Collection<Int>): Int {
var result = 0
for (i in ints)
    result += i
return result
}

fun sum(vararg ints: Int) = sum(ints.toSet())

是否有更好/惯用的方法来为两种参数类型定义函数?在许多情况下,我只对一个或两个元素使用这样的函数,因此每次在函数外部用listOf()包装它对我来说似乎很笨拙。

标签: kotlincollectionsparametersvariadic-functions

解决方案


我认为没有更好的方法可以做到这一点。您可以使用您的示例或此示例:

fun sum(ints: Collection<Int>) = sum(*ints.toIntArray())

fun sum(vararg ints: Int): Int {
    var result = 0
    for (i in ints)
        result += i
    return result
}

推荐阅读