Есть ли способ получить arity функции? Например, учитывая следующую функцию:Получить функцию arity в scala
def moop[I,O](func: I => O) = {
val arity = I.???
???
}
Как бы я получить арность func
?
Есть ли способ получить arity функции? Например, учитывая следующую функцию:Получить функцию arity в scala
def moop[I,O](func: I => O) = {
val arity = I.???
???
}
Как бы я получить арность func
?
Если I
является кортежем, вы можете позвонить на него productArity
, который унаследован от Product
.
Если у вас есть объект, о котором вы только знаете, это какая-то функция, вам нужно будет проверить (конечный) набор классов FunctionN
, так как нет общего супертипа как для кортежей. Похоже, что у нас есть Function0
до Function22
.
Я думаю, что прибегну к sbt-шаблону, чтобы генерировать конкретные функции создания для всех возможных явлений. – irundaia
Как это могло быть что-то кроме 1? –
Например, 'I' может быть типом кортежа – irundaia
AFAIK, кортежи все еще один операнд. – Hiura