Swift之旅(七)范型

前端之家收集整理的这篇文章主要介绍了Swift之旅(七)范型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在尖括号里面写上名称就可以使函数或者类型变为范型。

@H_404_3@func repeat<Item>(item: Item,times: Int) -> [Item] { var result = [Item]() for i in 0..<times { result.append(item) } return result } repeat("knock",4)

不仅可以定义范型函数方法,还可以定义范型类、枚举和结构体。

@H_404_3@// 重新实现 Swift 标准类库的可选类 enum OptionalValue<T> { case None case Some(T) } var possibleInteger: OptionalValue<Int> = .None possibleInteger = .Some(100)

在类型名后面加 where 来指定一组约束——例如,要求类型必须是实现一个协议的,要求两个类型必须是一致的,或者要求类必须继承某个特定的父类

@H_404_3@func anyCommonElements <T,U where T: SequenceType,U: SequenceType,T.Generator.Element: Equatable,T.Generator.Element == U.Generator.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])

试一试

修改 anyCommonElements 函数,返回两个集合相等部分。

在这个简单的例子中,你可以省略掉 where ,只需简写为在冒号后加上协议名或类名即可。 <T: Equatable>的写法与 <T where T: Equatable>是一样的。

猜你在找的Swift相关文章