当前位置:  开发笔记 > IOS > 正文

数组初始化的短期和长期形式之间的有效差异

如何解决《数组初始化的短期和长期形式之间的有效差异》经验,为你挑选了0个好方法。

Swift Guided Tour中的最后一次实验要求读者:

修改anyCommonElements(_:_ :)函数以生成一个函数,该函数返回任意两个序列共有的元素数组.

我修改的第一个快速通道:

func anyCommonElements  (lhs: T, _ rhs: U) -> [T.Generator.Element] {
    var commonElements = [T.Generator.Element]()
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                commonElements.append(lhsItem)
            }
        }
    }
    return commonElements
}

我收到与commonElementsXcode 7.1.1中第2行的数组初始化相关的错误:

无效使用'[]'来调用非函数类型'[T.Generator.Element.Type]'的值

但是,如果我只是简单地更改初始化以使用在第2行创建空数组的纵向形式,那么一切都可以正常运行且没有错误:

func anyCommonElements  (lhs: T, _ rhs: U) -> [T.Generator.Element] {
    var commonElements = Array() // Longhanded empty array
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                commonElements.append(lhsItem)
            }
        }
    }
    return commonElements
}

在Swift文档中,它指出:

Swift数组的类型是完整的Array,其中Element是允许存储数组的值的类型.您也可以用简写形式编写数组类型[Element]. 虽然这两种形式在功能上是相同的,但是简写形式是优选的,并且在引用阵列的类型时在本指南中使用.

(重点补充.)

如果它们"在功能上相同",为什么我在上面的第一个例子中收到一个错误,显然是因为我用简写形式创建一个空数组?或者 - 或许更有可能 - 我是否缺乏对手头问题的基本了解?

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有