2009-10-19 8 views
9

में जेनेरिक वेरिएबल्स शुरू करना मैं इसे प्रारंभ किए बिना स्केल में जेनेरिक चर घोषित कैसे करूं (या किसी भी मूल्य को आरंभ करना)?स्कैला

def foo[T] { 
    var t: T = ???? // tried _, null 
    t 
} 

उत्तर

13
def foo[T] { 
    var t: T = null.asInstanceOf[T] 
    t 
} 

और, यदि आप समारोह में शामिल पसंद नहीं है, आप कर सकते हैं इसे इस तरह से कम करें:

// Import this into your scope 
    case class Init() 
    implicit def initToT[T](i: Init): T = { 
    null.asInstanceOf[T] 
    } 

    // Then use it 
    def foo[T] { 
    var t: T = Init() 
    t 
    } 
8

आप स्थानीय चर को प्रारंभ नहीं कर सकते, लेकिन आप क्षेत्रों के लिए ऐसा कर सकते हैं:

scala> class foo[T] { 
    | var t: T = _ 
    | } 
defined class foo 
+2

क्या आपको पता है कि कक्षा चर के लिए अनुमति क्यों है लेकिन विधि चर नहीं है? – IttayD

+0

नहीं, मुझे नहीं पता। –