2012-04-19 13 views
11

अजगर में, कई चर वापस जाने के लिए, मैं क्या कर सकते हैं -जावास्क्रिप्ट फ़ंक्शन से एकाधिक चर लौटें?

def function_one(i): 
    return int(i), int(i) * 2 

value, duble_value = function_one(1) 

मैं जावास्क्रिप्ट का उपयोग कर यदि कार्यों केवल एक ही वापसी मान वापस आ सकते हैं इस एक ही परिणाम कैसे प्राप्त होगा? (मुझे एक सरणी का उपयोग करना लगता है?)

+1

तकनीकी तौर पर आप इसे में दो क्षेत्रों, जो अभी भी एक भी मूल्य है के साथ एक * टपल * लौट रहे हैं। मैं जावास्क्रिप्ट से परिचित नहीं हूं, लेकिन अगर कुछ प्रकार की सरणी या संरचना का उपयोग किया जा सकता है, तो यह आदर्श होगा। – Makoto

+3

यदि आप जिन दो पूर्णांक लौट रहे हैं वे प्रमुख संख्या हैं, तो आप उनके उत्पाद को वापस कर सकते हैं। : पी –

+1

मकोटो की टिप्पणी बहुत अच्छी है। ** पायथन केवल * एक मान * वापस कर सकता है। ** जावास्क्रिप्ट में 'tuple'-type नहीं है, इसलिए ऑब्जेक्ट्स (उदा।' Dict') या Arrays (उदा। 'List') को प्रतिस्थापन के रूप में उपयोग किया जा सकता है। इसके अलावा जावास्क्रिप्ट में अनुक्रम-अनपॅकिंग नहीं है (जो पायथन में 'x, y = tuple' संभव बनाता है) ताकि अपघटन लंबे समय तक किया जाना चाहिए। –

उत्तर

30

आपको या तो किसी सरणी या ऑब्जेक्ट का उपयोग करने की आवश्यकता है।

उदाहरण के लिए:

function test() { 
    return {foo: "bar", baz: "bof"}; 
} 

function test2() { 
    return ["bar", "bof"]; 
} 

var data = test(); 
foo = data.foo; 
baz = data.baz; 

data = test2(); 
foo = data[0]; 
baz = data[1]; 
+0

एक और विकल्प (लेकिन उतना अच्छा नहीं): 'फ़ंक्शन टेस्ट (ret) {ret.a = 42; ret.b = 43; } ' –

+1

@AtesGoral यह तब काम नहीं करेगा जब" गैर-ऑब्जेक्ट "प्रकार पारित किया जाता है (और यदि कोई पैराम आपूर्ति नहीं की जाती है तो यह एक बुरा अपवाद होगा)। यह मुझे थोड़ी उल्टी करना चाहता है। –

+0

@pst यह मानता है कि कोई जानबूझकर किसी ऑब्जेक्ट में गुजरता है। इस विधि के उपयोग हैं, खासकर जब आप एकाधिक स्रोतों से उसी पूल (ऑब्जेक्ट) में पैरामीटर का एक सेट एकत्र कर रहे हैं। –

-1
function foo(){ 
    return ["something","something else","something more","something further"]; 
} 

let [a,b,c,d] = foo(); 
+1

जबकि यह कोड स्निपेट प्रश्न हल कर सकता है, [स्पष्टीकरण सहित] (http: //meta.stackexchange। कॉम/प्रश्न/114762/समझा-पूरी तरह से कोड-आधारित-उत्तर) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जानते हैं। –

संबंधित मुद्दे