2013-08-28 19 views

Antwort

27

Dies funktioniert für mich:

fn addsub(x: isize, y: isize) -> (isize, isize) { 
    return (x + y, x - y); 
} 

Es ist im Grunde das gleiche wie in gehen, aber die Klammern sind erforderlich.

+0

die beste Lösung, ich habe es vorher nicht versucht. Es scheint, dass wir Tupel verwenden mussten, um es zu simulieren. Vielen Dank! – sunny2016

+3

Klammern sind in Go ebenfalls erforderlich. ;) – weberc2

+2

Nein sind sie nicht. (Er sprach über die 'Return'-Anweisung.) – Timmmm

15

In Rust Sie ein Tupel mit mehr als einem Wert zurückgeben kann:

fn my_func() -> (u8, bool) { 
    (1, true) 
} 

Eine Sprache mehr als ein Wert zurückgegeben wird dies wahrscheinlich mit einem Tupel emuliert oder eine andere Datenstruktur wie in den meisten Aufrufkonventionen der Wert Rückkehr ist in nur einem Register.

Ich kann nichts über Go sagen, aber es gibt hohe Chancen, dass sie nur die multiplen Werte in einem Tupel emulieren und die Kompilierung dazu zwingen, die Renditen zu verwalten.

Ich sehe kein Problem mit Rost tun dies als dies ist, wie ocaml oder haskell (und andere) es verwaltet, und sie erzwingen Typprüfung in den Rückgabewerten (oder Tupel) so Chancen etwas schlecht geht sind gering. Die gebräuchlichste Methode zum Verwalten der Rückgabewerte ist das Dekonstruieren des Tupels in zwei oder mehr Bindungen (let a, b = tuple_2()).

Nur meine zwei Cent, fühlen Sie sich frei, mich zu korrigieren.

+3

Nur Präzision. Siehe http://stackoverflow.com/questions/18622706/what-exactly-is-happening-when-go-returns-multiple-values ​​ –

+5

ab 1.2.0 muss die Syntax "let (a, b) =" lauten tuple_2(); ' – Amol

5

In Rust Sie müssen nicht verwenden, um die Rückkehr Stichwort: uses Go kein Tupel nicht verwendet, aber wirklich mehrere Register:

fn addsub(x: isize, y:isize) -> (isize, isize) { 
    (x + y, x - y) // use tuple to simulate it 
} 
+0

Beantwortet die Frage nicht (der wichtige Teil der Lösung besteht darin, die Klammern zu enthalten), aber es lohnt sich, daran zu erinnern, dass Rust eine ausdrucksbasierte Sprache mit implizit ist Rückkehr. – zstewart

Verwandte Themen