関数のアリティを取得する方法はありますか? たとえば、次の関数があるとします。
def moop[I,O](func: I => O) = {
val arity = I.???
???
}
のアリティを取得するにはどうすればよいfunc
ですか?
I
がタプルの場合、productArity
から継承されたメソッドを呼び出すことができますProduct
。
何らかの関数であることがわかっているオブジェクトがある場合はFunctionN
、タプルのような共通のスーパータイプがないため、クラスの (有限) セットに対してチェックする必要があります。現在、Function0
最大 まであるようFunction22
です。