博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift-范型
阅读量:6075 次
发布时间:2019-06-20

本文共 1359 字,大约阅读时间需要 4 分钟。

Type Constraint

<T: Comparable>  array.sorted()

<Element: Equatable> array.contains{$0 != first}

 

structures

struct Queue
{}extension Queue { func isHomo() -> Bool { guard let first = elements.first else {
return true} return !elements.contains{$0 != first} }}

 

functions

e.g.1

// Comparable: func mid
(array: [T]) -> T? { guard !array.isEmpty else {
return nil} return array.sorted()[(array.count - 1) / 2]}mid(array: [3, 2, 1, 5 ,4])mid(array: ["Shell", "Han", "Vermouth"])

e.g.2

func pairs
(from dictionary:[Key: Value]) -> [(Key, Value)] { return Array(dictionary)}

 

protocols

// 定义可加的协议// 类型扩展,使用协议protocol Summable {
static func +(lhs: Self, rhs: Self) -> Self}extension Int: Summable {}extension Double: Summable {}extension String: Summable {}func add
(x: T, y:T) -> T { return x + y}let intSum = add(x: 1, y: 2)let doubleSum = add(x: 1.2, y: 2.3)let stringSum = add(x: "Shell", y: " Han")

 

enum

enum Result
{ case success(Value), failure(Error)}enum MathError
{ case divisionByZero}func divide(x: Int, by y: Int) -> Result
{ guard y != 0 else { return .failure(MathError.divisionByZero) } return .success(x / y) }

 

转载于:https://www.cnblogs.com/HackHer/p/8522220.html

你可能感兴趣的文章
Flux OOM实例
查看>>
07-k8s-dns
查看>>
Android 中 ListView 分页加载数据
查看>>
oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
查看>>
Go方法
查看>>
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
腾讯十年老兵:区块链本质上是一个异地多活的分布式数据库
查看>>