将setOf作为参数传递给函数。这怎么能实现呢?
我必须写一个函数,它以三组为参数。
签名看起来像这样:
fun twoInThree(a: setOf<Int>, b: setOf<Int>, c: setOf): setOf<Int> {}
但这似乎不可能。编译器抱怨。使用 ArrayList 理论上是可行的。
我究竟做错了什么?如何完成所需的声明?
回答
setOf()
是一个函数,而不是一个类型。您调用它来创建Set<T>
.
为自定义twoInThree
函数定义参数时,您需要的是Set<T>
类型:
fun twoInThree(a: Set<Int>, b: Set<Int>, c: Set<Int>): Set<Int> {}
一些额外的注意事项:
-
您对 的混淆
ArrayList
可能来自于构造函数ArrayList()
(它是一个返回 的实例的函数ArrayList
)实际上看起来像类型 的事实ArrayList<T>
。 -
使用
ArrayList
作为变量和函数参数类型通常是不鼓励(即使它是完全有效)。相反,我们更喜欢保持更通用并使用List<T>
界面。
- This also demonstrates why the Kotlin coding conventions strongly prefer classes to start with a capital letter, and methods/functions to start with a lower-case letter, making them easy to distinguish.