swift – 从函数返回一个可变数组

前端之家收集整理的这篇文章主要介绍了swift – 从函数返回一个可变数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从函数返回一个可变数组?

这是一段简短的代码片段,使其更加清晰:

var tasks = ["Mow the lawn","Call Mom"]
var completedTasks = ["Bake a cake"]

func arrayAtIndex(index: Int) -> String[] {
    if index == 0 {
        return tasks
    } else {
        return completedTasks
    }
}

arrayAtIndex(0).removeAtIndex(0)
// Immutable value of type 'String[]' only has mutating members named 'removeAtIndex'

以下代码片段有效但我必须返回一个数组,而不是NSMutableArray

var tasks: NSMutableArray = ["Mow the lawn","Call Mom"]
var completedTasks: NSMutableArray = ["Bake a cake"]

func arrayAtIndex(index: Int) -> NSMutableArray {
    if index == 0 {
        return tasks
    } else {
        return completedTasks
    }
}

arrayAtIndex(0).removeObjectAtIndex(0)

tasks // ["Call Mom"]

谢谢!

斯威夫特不鼓励这整个范例. swift中的数组是“值类型”,意味着它们在每次传递时都会被复制.这意味着一旦将数组传递给函数,就不能让该函数修改原始数组的内容.这更安全.

你能做的是:

var newArray = arrayAtIndex(0)
newArray.removeObjectAtIndex(0)

但请注意,任务不会被修改. NewArray将删除第一个对象的任务副本

这与NSMutableArray一起使用的原因是NSArray和NSMutableArray是通过引用复制的,因此除非明确复制,否则它们总是引用原始数组.

猜你在找的Swift相关文章