码迷,mamicode.com
首页 > 其他好文 > 详细

Swift 泛型(generics)

时间:2014-06-06 07:52:02      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

Swift 使用<>来声明泛型函数或泛型类型:

bubuko.com,布布扣
1 func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
2     var result = ItemType[]()
3     for i in 0..times {
4         result += item
5     }
6     return result
7 }
8 repeat ("knock", 4)
bubuko.com,布布扣

Swift 也支持在类、枚举和结构中使用泛型:

bubuko.com,布布扣
1 // Reimplement the Swift standard library‘s optional type enum OptionalValue<T> {
2     case None
3     case Some (T)
4 }
5 var possibleInteger: OptionalValue<Int> = .None
6 possibleInteger = .Some (100)
bubuko.com,布布扣

有时需要对泛型做一些需求(requirements),比如需求某个泛型类型实现某个接口或继承自某个特定类型、两个泛型类型属于同一个类型等等,Swift 通过where描述这些需求:

bubuko.com,布布扣
 1 func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool {
 2     for lhsItem in lhs {
 3         for rhsItem in rhs {
 4             if lhsItem == rhsItem {
 5                 return true
 6             }
 7         }
 8     }
 9     return false
10 }
11 anyCommonElements ([1, 2, 3], [3])
bubuko.com,布布扣

 

 

Swift 泛型(generics),布布扣,bubuko.com

Swift 泛型(generics)

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/atong/p/3767522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!