2013-02-13 23 views
6

में "उस" का प्रतीक क्या है, मैंने जेनेरिक के साथ "उस" प्रतीक का उपयोग करके कोड के कई उदाहरण देखे हैं। अर्थातस्कैला

def map[B, That](f : (A) => B) : That 

लेकिन, उस शब्द की गूगल-क्षमता की कमी के कारण, मैं यह क्या करता है पर किसी भी प्रलेखन नहीं मिल रहा है या मैं इसका उपयोग कैसे।

क्या यह एक सामान्य प्रकार का प्लेसहोल्डर है, या क्या यह कुछ खास करता है?

+3

यह प्लेसहोल्डर है - हाँ –

उत्तर

13

[...] के अंदर कोई भी पहचानकर्ता टाइप पैरामीटर के रूप में माना जाता है।

तो def map[B, That](f : (A) => B) : ThatThat के मामले में केवल सामान्य वापसी प्रकार का अर्थ है। इसे Z के साथ बदलें उदाहरण के लिए: def map[B, Z](f : (A) => B) : Z का सटीक प्रभाव होगा।

3

जावा में अनुवाद, कि होगा:

public <B, That> That map(f: Function1<A, B>) 

या, दूसरे शब्दों में, That एक सामान्य (या स्काला शब्दावली, एक प्रकार पैरामीटर में,) है।

3

यह एक "प्लेसहोल्डर" है जैसा कि आप इसे कॉल करते हैं (यानी, एक प्रकार पैरामीटर); संग्रह पुस्तकालय में सम्मेलन का निर्माण किया जाएगा जो संग्रह के प्रकार का प्रतिनिधित्व करने के लिए That का उपयोग करना है। (इस प्रकार, आप this से That में बदल जाते हैं।)

+0

इसे "प्लेसहोल्डर" कहकर सबसे भ्रामक है। यह एक औपचारिक प्रकार पैरामीटर है जैसे विधि परिभाषाओं में "नियमित" (मान) तर्क नाम औपचारिक पैरामीटर हैं। यह एक विधि के लिए तर्क के लिए प्रकार-स्तर समकक्ष है। –

+0

@RandallSchulz - दरअसल, लेकिन यही ओपी ने इसे बुलाया। मैंने यह जवाब देने के लिए मेरा जवाब संशोधित किया है कि यह क्या है और सुझाव देता है कि "प्लेसहोल्डर" तकनीकी रूप से सही शब्द नहीं है। –