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

本文共 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

你可能感兴趣的文章
HTML如何把输入框变成必填值,required输入框为必填项
查看>>
背锅侠逆袭之路
查看>>
演示:使用协议分析器取证IPv6的报文结构
查看>>
oracle 11gr2 rac中的4种IP解说
查看>>
为什么你找不到工作?
查看>>
汇编语言的应用
查看>>
device platform 相应的表
查看>>
安德鲁斯----多媒体编程
查看>>
中断小笔记
查看>>
FreeBinary 格式说明
查看>>
使用Spring Cloud和Docker构建微服务
查看>>
九州云实战人员为您揭秘成功部署OpenStack几大要点
查看>>
CloudCC:智能CRM究竟能否成为下一个行业风口?
查看>>
追求绿色数据中心
查看>>
Web开发初学指南
查看>>
探寻光存储没落的真正原因
查看>>
高通64位ARMv8系列服务器芯片商标命名:Centriq
查看>>
构建智能的新一代网络——专访Mellanox市场部副总裁 Gilad Shainer
查看>>
《数字视频和高清:算法和接口》一导读
查看>>
《中国人工智能学会通讯》——6.6 实体消歧技术研究
查看>>