Когда мы хотим использовать интерфейс 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>
Так что я предполагаю, что они делают всю магию где-то еще, и задаюсь вопросом, знает ли кто-нибудь, возможно ли этосделать это, и, возможно, может предоставить некоторую информацию о том, как это сделать.