使用一个函数在Swift中找到两个序列中的共同元素

使用一个函数在Swift中找到两个序列中的共同元素,第1张

概述我正在尝试完成苹果新书“Swift编程语言”第46页的练习。它提供以下代码: func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs 我正在尝试完成苹果新书“Swift编程语言”第46页的练习。它提供以下代码:
func anyCommonElements <T,U where T: Sequence,U: Sequence,T.GeneratorType.Element: Equatable,T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T,rhs: U) -> Bool {    for lhsItem in lhs {        for rhsItem in rhs {            if lhsItem == rhsItem {                return true            }        }    }    return false}anyCommonElements([1,2,3],[3])

练习是改变函数,以便返回两个序列的所有元素。为此,我尝试使用以下代码:

func anyCommonElements <T,T.GeneratorType.Element:     Equatable,rhs: U) -> T.GeneratorType[] {    var toReturn = T.GeneratorType[]()    for lhsItem in lhs {        for rhsItem in rhs {            if lhsItem == rhsItem {                toReturn.append(lhsItem)            }        }    }    return toReturn}anyCommonElements([1,[3])

但在第2行,我收到错误:找不到成员’下标’

这个错误的原因是什么,这个问题的最佳解决方案是什么?

通过使返回值为T.GeneratorType.Element的数组,我可以使其工作。
func anyCommonElements <T,U where T: SequenceType,U: SequenceType,T.Generator.Element: Equatable,T.Generator.Element == U.Generator.Element> (lhs: T,rhs: U) -> Array<T.Generator.Element> {    var toReturn = Array<T.Generator.Element>()    for lhsItem in lhs {        for rhsItem in rhs {            if lhsItem == rhsItem {                toReturn.append(lhsItem)            }        }    }    return toReturn}anyCommonElements([1,[3])
总结

以上是内存溢出为你收集整理的使用一个函数在Swift中找到两个序列中的共同元素全部内容,希望文章能够帮你解决使用一个函数在Swift中找到两个序列中的共同元素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1053934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存