如何在swift中就地输入数组?

时间:2015-12-29 09:00:45

标签: ios arrays swift

最近我有一段这样的代码:

function on_add_to_cart_check_club_info($cart_item_key, $product_id)
{
    // If product tagged as for club members
    if (has_term( 'club-only', 'product_tag', $product_id ))
    {
        $current_user = wp_get_current_user();
        if (!$current_user || $current_user->club_card_number == '')
        {
            // Drop to the same page if user haven't specified club card number
            header('Location: '.get_permalink($product_id));
            break;
        }
    }
}

我认为将“var”添加到arr1会使其变得可变。我最终注意到它在调试三个小时后没有改变输入数组“arr1”。然后我尝试将关键字“mutating”添加到函数中,但这会产生错误:     'mutating'对类或类绑定协议中的方法无效

那么在函数a()中就地改变arr1的正确方法是什么?添加“变异”到func的方式去?如果是这样,我该如何解决错误消息?谢谢。

1 个答案:

答案 0 :(得分:1)

Array Int是值类型,表示在传递给方法时复制对象。

您可以将arr1参数声明为inout,将数组视为引用类型:

private func a(inout arr1: [Int]) {
  arr1.removeRange(0..<2)
}

var array = [1, 2, 3, 4]
a(&array)
print(array) // [3, 4]

或者您必须返回更改的数组:

private func a(var arr1: [Int]) -> [Int] {
  arr1.removeRange(0..<2)
  return arr1
}

let array = [1, 2, 3, 4]
let result = a(array)
print(result) // [3, 4]