如何修改传递给函数的二维数组?

时间:2016-03-21 05:28:23

标签: arrays function swift2 inout

我的功能如下

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)
    }
}

当我尝试修改listresult时,它给了我错误 。我搜索过input关键字可用于通过引用传递参数,然后可以在本地和外部修改,但我无法使语法正确。我怎样才能使它工作?或者有更好的方法可以修改它们吗?

2 个答案:

答案 0 :(得分:1)

您应该在函数签名中使用inout关键字:

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

使用&#34;&amp;&#34;进行通话例如:

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

答案 1 :(得分:0)

您应该在输入输出参数标题下使用inout而不是input作为described here