最近我有一段这样的代码:
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的方式去?如果是这样,我该如何解决错误消息?谢谢。
答案 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]