Swift中的typealias

本文介绍Swift语言中的typealias特性,通过实例演示如何使用typealias使代码更具可读性和表达力。

typealias

typealias 是用来为已经存在的类型重新定义名字的,通过重新命名,可以使代码变得更加清晰。使用 typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字。

比如在计算一个平面上的距离和位置的时候,我们一般用 Double 类型来表示距离,用 CGPoint 类型来表示位置,下面是一个计算两点之间的距离的方法:

func distanceBetweenPoint(fromPoint: CGPoint, toPoint: CGPoint) -> Double {
    let dx = Double(toPoint.x - fromPoint.x)
    let dy = Double(toPoint.y - fromPoint.y)
    return sqrt(dx * dx + dy * dy)
}

let fromP: CGPoint = CGPoint(x: 0, y: 0)
let toP: CGPoint = CGPoint(x: 1, y: 1)

let distance: Double =  distanceBetweenPoint(fromP, toPoint: toP)

在这个例子中,虽然在数学上和最后的程序运行上都没什么问题,但是因为我们没有将数学抽象和实际问题结合起来,使得在阅读代码时我们还需要在大脑中进行一次额外的转换:CGPoint 代表一个点,就是在坐标系里的位置,Double 是一个数字,是代表两点之间的距离。

这时候如果我们使用 typealias,就可以将这种转换直接写在代码里,从而减轻阅读和维护的负担:

typealias Point = CGPoint
typealias Distance = Double

func distanceBetweenPoint(fromPoint: Point,
    toPoint: Point) -> Distance {
        let dx = Distance(toPoint.x - fromPoint.x)
        let dy = Distance(toPoint.y - fromPoint.y)
        return sqrt(dx * dx + dy * dy)
}

let fromP: Point = Point(x: 0, y: 0)
let toP: Point = Point(x: 1, y: 1)

let distance: Distance =  distanceBetweenPoint(fromP, toPoint: toP)

同样的代码,在 typealias 的帮助下,读起来就轻松多了。在更复杂的实际问题中时,就可以不再思考代码里那些成堆的 Int 或者 String 等基本类型到底代表的是什么了,这样你应该能省下不少脑细胞。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值