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是通过引用复制的,因此除非明确复制,否则它们总是引用原始数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |