2012-04-19 16 views
11

W Pythonie, aby powrócić wielu zmiennych, co mogę zrobić -Zwróć wiele zmiennych z funkcji JavaScript?

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

value, duble_value = function_one(1) 

Jak chciałbym osiągnąć ten sam rezultat przy użyciu javascript, jeśli funkcje mogą zwrócić tylko jedną wartość powrotną? (Zakładam użycie tablicy?)

+1

Technicznie jesteś przekazujących * krotki * z dwóch pól w nim, która wciąż jest pojedyncza wartość. Nie znam JavaScriptu, ale jeśli istnieje jakaś tablica lub struktura, którą można zastosować, byłoby to idealne. – Makoto

+3

Jeśli dwie liczby całkowite, które wracasz, są liczbami pierwszymi, możesz zwrócić ich produkt. : P –

+1

Komentarz Makoto jest bardzo dobry. ** Python może zwracać tylko * jedną wartość *. ** JavaScript nie ma typu 'tuple', więc Obiekty (np.' Dict') lub Array (np. 'List') mogą być użyte jako zamienniki. Również JavaScript nie ma rozpakowywania sekwencji (co czyni 'x, y = krotką' możliwą w Pythonie), więc dekompozycja musi być wykonana długo. –

Odpowiedz

30

Musisz użyć tablicy lub obiektu.

Na przykład:

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

Inna opcja (ale nie tak ładna): 'test funkcji (ret) {ret.a = 42; ret.b = 43; } ' –

+1

@AtesGoral To nie zadziała, gdy zostanie przekazany typ" nie-obiektowy "(i będzie nieprzyjemnym wyjątkiem, jeśli nie zostaną podane żadne parametry). To także sprawia, że ​​chcę trochę wymiotować. –

+0

@pst Zakłada się, że ktoś celowo przechodzi w obiekcie. Ta metoda ma swoje zastosowania, szczególnie gdy zbieramy zestaw parametrów do tej samej puli (obiektu) z wielu źródeł. –

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

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

Ten fragment kodu może rozwiązać pytanie, [w tym wyjaśnienie] (http: //meta.stackexchange. com/questions/114762/explanining-fully-code-based-answers) naprawdę pomaga poprawić jakość twojego posta. Pamiętaj, że odpowiadasz na pytanie przeznaczone dla czytelników w przyszłości, a te osoby mogą nie znać powodów sugestii dotyczących kodu. –

Powiązane problemy