赞助商

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

发布时间:2019-05-15 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了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 – 从函数返回一个可变数组全部内容,希望文章能够帮你解决swift – 从函数返回一个可变数组所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: