2016-01-31 40 views
1

有沒有辦法檢索函數的arity?例如,考慮下面的函數:在scala中獲取函數arity

def moop[I,O](func: I => O) = { 
    val arity = I.??? 
    ??? 
} 

我將如何得到func的元數?

+4

它怎麼可能不是1? –

+0

例如'I'可能是一個元組類型 – irundaia

+5

AFAIK,元組仍然是一個操作數。 – Hiura

回答

3

如果I是一個元組,您可以調用productArity方法,它繼承自Product

如果你有一個對象,你只知道它是某種功能,你將不得不根據(有限的)FunctionN類來檢查,因爲沒有與元組相同的超類型。看起來我們目前有Function0高達Function22

+0

我想我會訴諸於sbt-boilerplate爲所有可能的arities生成特定的創建函數。 – irundaia