Swift中的typealias

来源:互联网 发布:剑三喵太捏脸数据 编辑:程序博客网 时间:2024/04/30 18:07

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 = CGPointtypealias Distance = Doublefunc 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 等基本类型到底代表的是什么了,这样你应该能省下不少脑细胞。

0 0
原创粉丝点击