我正在关注2014年WWDC教程408:使用XCode Beta 3的
Swift Playgrounds(30分钟).自Beta 2以来,Swift语法已发生变化.
var data = [27,46,96,79,56,85,45,34,2,57,29,66,99,65,40,58,87,64] func exchange<T>(data: [T],i: Int,j: Int) { let temp = data[i] data[i] = data[j] // Fails with error '@lvalue $T8' is not identical to 'T' data[j] = temp // Fails with error '@lvalue $T5' is not identical to 'T' } exchange(data,2) data
为什么我不能以这种方式修改可变整数数组?
因为子例程参数是使用let隐式定义的,因此不可变.尝试将声明更改为:
func exchange<T>(inout data: [T],j: Int) {
和调用:
exchange(&date,2)
您也可以使用var,但这只允许在子例程中修改数组. beta 3的最大变化是使数组真正按值传递,而不是仅仅在某种程度上按值传递,而不是其余的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。