Swift之旅(七)范型
发布时间:2020-12-14 02:13:07 所属栏目:百科 来源:网络整理
导读:在尖括号里面写上名称就可以使函数或者类型变为范型。 func repeat Item( item : Item, times : Int) - [Item] { var result = [Item]() for i in 0. . times { result .append( item ) } return result } repeat ( "knock" , 4 ) 不仅可以定义范型函数和方
在尖括号里面写上名称就可以使函数或者类型变为范型。 func repeat<Item>(item: Item,times: Int) -> [Item] {
var result = [Item]()
for i in 0..<times {
result.append(item)
}
return result
}
repeat("knock",4)
不仅可以定义范型函数和方法,还可以定义范型类、枚举和结构体。 // 重新实现 Swift 标准类库的可选类
enum OptionalValue<T> {
case None
case Some(T)
}
var possibleInteger: OptionalValue<Int> = .None
possibleInteger = .Some(100)
在类型名后面加 where 来指定一组约束——例如,要求类型必须是实现一个协议的,要求两个类型必须是一致的,或者要求类必须继承某个特定的父类。 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])
在这个简单的例子中,你可以省略掉 where ,只需简写为在冒号后加上协议名或类名即可。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |