当我们要使用界面kotlin.Function
时,可以执行以下操作:
import kotlin.Function1
import kotlin.Function2
.......................
import kotlin.FunctionN
然后我们可以创建FunctionN
,如下所示:
val funcN : FunctionN<Type1, Type2, ..., TypeN+1> = {t1, t2, ..., tN -> tN+1}
例如,当N = 2时,我们可以使函数如下:
val func2 : Function2<Int, Int, String> = {i1, i2 -> "$i1 + $i2 = ${i1+i2}"}
这对任何数字都有效,因此他们没有为每个数字编写单独的函数,但是他们以某种方式动态地执行此操作,现在我想知道是否有可能复制这种行为并创建一些有效的接口/类以类似的方式,或者仅Function
特定。
我尝试在线搜索,但找不到任何东西,很可能是因为我什至不知道该怎么称呼。
还查看了源代码,但它只是一个空接口:
/**
* Represents a value of a functional type, such as a lambda, an anonymous function or a function reference.
*
* @param R return type of the function.
*/
public interface Function<out R>
所以我认为他们正在其他地方做所有的魔术,想知道是否有人知道是否有可能这样做,并且也许可以提供一些有关如何做的信息。
答案 0 :(得分:2)
他们不是动态地做,只是每个数字都有一个单独的功能。
您无法达到类或接口的动态参数计数行为。您可以传递varargs,但这不是您想要的。但是,您可以尝试使用代码生成,使用intellij想法或注释处理来达到非常相似的效果。