1
界是否有可能寫出這樣的事情和重用HelperTest.AnyHelper類型?重用斯卡拉類型的方法定義
class HelperUtil
{
/* this is what I would like to write... reuse the AnyHelper type in the definition */
def accept[HelperTest.AnyHelper](helper : HelperTest.AnyHelper) =
{
// code here
}
}
object HelperTest
{
type AnyHelper = T forSome { type T <: GenericHelper }
}
abstract class GenericHelper
{
val name = ""
}
目前,我不得不寫這篇文章,因爲編譯器不會讓我:
class HelperUtil
{
/* gets too verbose, if the generic type gets more complex and would be useful to reuse the type */
def accept[T <: GenericHelper](helper : T) =
{
// code here
}
}
abstract class GenericHelper
{
val name = ""
}
還是我完全錯誤的軌道上?
我所尋找的是「再利用」的類型泛型參數的方式,因爲準確的參數用於幾個地方。有沒有辦法,還是有其他的實施建議? – slaursen 2013-03-21 16:41:45
@slaursen我很抱歉,但我不明白「重複使用」是什麼意思。你已經通過聲明'helper'來重用類型'HelperTest.AnyHelper'。 – 2013-03-21 16:46:51
反覆重複「[A <:某物[A]]」的示例。如果界限更加複雜,那將是地獄和錯誤傾向於不斷重複它。 def method1 [A <:Something [A]](parm:A)= {...} def method2 [A <:Something [A]](text:String,parm:A )= {...} def method3 [A <:Something [A]](parm:A):List [A] = {...} etc }' – slaursen 2013-03-21 18:03:11