1
給定一個具有兩個類型參數的函數,是否可以在scala中爲單個類型傳遞類型參數,例如只需提供類型A
作爲類型B
可以由編譯器從函數f
。scala中的參數類型推斷
def foo[A, B](f: A => B): B = {
f(null.asInstanceOf[A])
}
現在,我發現只有兩種解決方案。
溶液1(標準使用):呼叫foo
並指定兩種類型的foo[String, Int](e => 1)
但Int
定義是多餘
解決方案2:該函數的定義更改爲
def foo[A, B](useType: A => Unit)(f: A => B): B = {
f(null.asInstanceOf[A])
}
並與使用它
def use[T](t: T) = {}
val res: Int = foo(use[String]) { a => 1 }
它的工作,但它似乎不是很漂亮,使用一個函數來提供編譯器的類型。
有沒有什麼辦法可以爲一個函數指定類型爲A
的兩個類型參數?
謝謝您的回答,我會再深入這個方向,看我是否可以使用類,而不是功能。 –