以下代码出现编译错误,因为它认为传递给函数的数组不可变。我知道Array是一个结构体,因此按值而不是按引用传递,那么当您将结构体传递给方法并且希望能够修改它时,该怎么处理呢?在这种情况下不想使用扩展。
var array = ["1", "2", "3"]
array.removeLast()
removeOne(array)
func removeOne(array: Array<AnyObject>) {
array.removeLast()
}
Array<String>
可以强制转换为Array<AnyObject>
,但由于你将其传递给一个inout
函数,它必须将Array<AnyObject>
强制转换回Array<AnyObject>
,这是不会自动进行的。 (它可以使用as
关键字进行转换,但在调用inout
函数时不可能这样做。) - Nate CookString
是一个struct
,因此无法继承自AnyObject
。不过,Any
也可能适用。 - Mike SString
是一个struct
类型,因此不能将其转换为AnyObject
。这不正确吗? - Mike SString
类型与NSString
类型相互转换,后者是一个类和对象。 - zaph