加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:24:01 所属栏目:百科 来源:网络整理
导读:如何从函数返回一个可变数组? 这是一段简短的代码片段,使其更加清晰: var tasks = ["Mow the lawn","Call Mom"]var completedTasks = ["Bake a cake"]func arrayAtIndex(index: Int) - String[] { if index == 0 { return tasks } else { return completed
如何从函数返回一个可变数组?

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

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是通过引用复制的,因此除非明确复制,否则它们总是引用原始数组.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读