क्या कोई स्काला फ़ंक्शन कॉल करने का कोई तरीका है जो अलग-अलग मानकों को लेता है, एक सरणी (ईसीएमएस्क्रिप्ट 6 में जावास्क्रिप्ट Spreads के समान)?'फैल' पैरामीटर?
ys = [10.0, 2.72, -3.14]
f(x, ...ys);
साफ वाक्य रचना होगा:
f(1, ys)
लेकिन यह संभव हो सकता है प्रतीत नहीं होता है। यहां तक कि f(1, ys:_*)
काम नहीं करता है (और न तो f(ys:_*)
करता है, क्योंकि संकलक बहुत कम पैरामीटर रिपोर्ट करता है - केवल पहला भरा हुआ है)।
उदाहरण:
def f (a:Int, b:Float, c:Float, d:Float): String
val x = 1
val ys = List(10.0, 2.72, -3.14) // note: non-Objects
val result = f(x, ys) // intuitive, but doesn't work
उपयोग की स्थिति: मौजूदा तरीकों है कि व्यक्ति पैरामीटर स्वीकार में (संग्रह से) परीक्षण डाटा इंजेक्शन। चूंकि ये परीक्षण के मामले हैं, यह ठीक है अगर ys में #params मेल नहीं खाता है और यह या तो रनटाइम त्रुटि या गलत परिणाम देता है।
सवाल यह है कि क्या स्काला एक पैरामीटर को कॉल करने के लिए एक साफ वाक्यविन्यास की अनुमति देता है जो पैरामीटर के संग्रह के बाद व्यक्तिगत पैरामीटर लेता है - चाहे वह अच्छा डिज़ाइन (हालांकि राय निश्चित रूप से स्वागत है)।
यदि ys' में 3 से कम तत्व या उससे अधिक हो तो क्या होना चाहिए? – huynhjl
फ़ंक्शन 'f' को ओवरलोड करना दिमाग में आता है। इससे आपको आपके द्वारा प्रदान किए गए तरीके से फ़ंक्शन को कॉल करने की अनुमति मिल जाएगी, लेकिन यह अन्य स्थितियों में –