2016-03-21 10 views
0

Meine Funktion ist alsWie ändert man ein zweidimensionales Array, das an eine Funktion übergeben wird?

func helper(root: TreeNode?, _ result: [[Int]], _ list: [Int], _ sum: Int, _ total: Int) { 
    list.append(root!.val) 
    if(total + root!.val == sum && root?.left == nil && root?.right == nil) { 
     result.append(list) 
    } 
    if(root?.left != nil && sum < total + root!.val) { 
     helper(root!.left, result, list, sum, total + root!.val) 
    } 
    if (root?.right != nil && sum < total + root!.val) { 
     helper(root!.right, result, list, sum, total + root!.val) 
    } 
} 

folgenden Wenn ich list zu ändern versucht und result es gab mir Fehler . Ich habe gesucht, dass input Schlüsselwort verwendet werden kann, um Parameter als Referenz zu übergeben, dann kann es sowohl lokal als auch extern geändert werden, aber ich konnte die Syntax nicht korrekt machen. Wie kann ich es zum Laufen bringen? Oder gibt es einen besseren Weg, sie zu ändern?

Antwort

0

Sie sollten In-Out-Parameter inout, nicht input, wie described here unter der Überschrift werden.

+0

Sorry, das war ein Tippfehler, habe ich 'inout 'aber es hat nicht funktioniert. – Xuting

1

Sie sollten das inout Schlüsselwort in der Funktion Signatur verwenden:

func helper(root: TreeNode?, inout _ result: [[Int]], inout _ list: [Int], _ sum: Int, _ total: Int) 

und die Anrufe machen "&" zum Beispiel mit:

helper(root!.left, &result, &list, sum, total + root!.val)