您的位置:首页 > 移动开发 > Swift

swift—5 Generics泛型

2014-06-11 17:47 141 查看
泛型可用于函数,方法,类,枚举,结构体
func repeat<ItemType>(item:
ItemType, times: Int) ->
ItemType[] {
   
var result = ItemType[]()
   
for i in
0..times {
        result += item
    }
   
return result
}
var ages =
repeat("xxx",
3)
for age
in ages {
   
println("age=\(age)");
}
enum OptionalValue<T> {
   
case None
   
case Some(T)
   
func simpleDescrition() ->
String {
       
switch self {
       
case OptionalValue<T>.None:
           
return "none"
       
case OptionalValue<T>.Some:
           
return "some"
        }
    }
}

var possibleInteger:
OptionalValue<Int> =
OptionalValue.None

println(possibleInteger.simpleDescrition());//none

possibleInteger = OptionalValue.Some(100)

println(possibleInteger.simpleDescrition());//some

在类型名后面使用 where 可以指定多个要求的列表,例如,要求类型实现一个指定的协议,要求两个类型一样,要求

类必须有一个指定的子类???????
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
            }
        }
    }

    println("ssssssss")

    return
false
}
var b =
anyCommonElements([1,
2, 3], [3])

println(b);//true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Swift iso Generics 泛型