8

जहाँ तक मुझे पता है, List या Seq की तरह लक्षण के बजाय स्वयं भाषा का हिस्सा होने की स्काला मानक पुस्तकालय में लागू किया जाता है।स्काला variadic कार्य करता है और Seq

एक बात यह है कि मुझे समझ नहीं आता है, हालांकि नहीं है: एक लग रहा है कि

तरह
def foo(args: String*) = ... 

आंतरिक एक args की पहुंच है और यह एक Seq हो जाएगा variadic कार्यों के लिए एक वाक्य रचना है।

  • Seq भाषा के हिस्से के रूप प्रकट करने के लिए एक विशेष डेटा संरचना पर्याप्त माना जाता है, या
  • * अंकन यहाँ एक अधिक सामान्य की एक विशेष मामला है:

    यह है कि क्या मेरे लिए स्पष्ट नहीं है वाक्यविन्यास जो कंक्रीट डेटा संरचनाओं इंटरफेस के किसी भी संदर्भ से बचने के लिए प्रबंधन करता है।

क्या कोई जानता है कि कौन सा सही घुसपैठ है?

उत्तर

12

यह वास्तव में कुछ हद तक एक भाषा और पुस्तकालय के बीच 'कलंक' है।

एक पैरामीटर अनुभाग का अंतिम मान पैरामीटर "*" द्वारा प्रत्यय हो सकता है, उदाहरण के लिए: §4.6.2 दोहराया पैरामीटर में स्काला भाषा विशिष्टता v2.9 राज्यों (..., एक्स: टी *)। विधि के अंदर इस तरह के एक दोहराया पैरामीटर के प्रकार तो अनुक्रम प्रकार scala.Seq[टी] है।

तो जब आप बार-बार तर्कों का उपयोग, यह माना जाता है कि scala.Seq रनटाइम पर उपलब्ध है (जो, मामला होना चाहिए के रूप में यह मानक पुस्तकालय का हिस्सा है)।

1

मुझे लगता है कि यह पहला है। भाषाएं मौजूद होने के कुछ प्रकार हैं, हालांकि वे वास्तव में भाषा का हिस्सा नहीं हैं। सेक के साथ आपको एक मिला।