Swift 为CGSize扩展数学运算符

直奔主题

let size = CGSizeMake(100, 50)

如何将size扩大两倍? 你可能习惯这样写

   let size = CGSizeMake(100, 50)
   let size2 = CGSizeMake(width:2*size.width,height:2*size.height)

看起来代码没什么问题 可以正常运行 ~~
那么我们能否让size像普通数字一样使用数学运算符(+,-,*,/....)???

如果你尝试这样写:

 let size = CGSizeMake(100, 50) * 2

将会出现编译错误 因为 * 运算符默认不支持该类型 那么我们是否可以重写 * 运算符 让它具备这种功能 ?答案是可以的 下面我们就为CGSize添加扩展方法 让CGSize具备数学运算能力

func *(l: CGSize,r: CGFloat)-> CGSize {
  return CGSize(width: r*l.width, height: r*l.height)
}

func /( l : CGSize, r: CGSize) -> CGSize {
    return CGSize(width:l.width/r.width,height:     l.height/r.height)
}

func*(l: CGSize,r: CGSize)-> CGSize{
    return CGSize(width: l.width*r.width, height:   l.height*r.height)
}

func -( l : CGSize, r: CGSize) -> CGSize {
    return CGSize(width:l.width-r.width,height: l.height-    r.height)
}

func -( l : CGPoint, r: CGPoint) -> CGPoint {
      return  CGPoint(x: l.x - r.x, y: l.y - r.y)
}

extension CGSize {
    var point: CGPoint {
       return CGPoint(x: self.width, y: self.height) }
}

该如何使用呢?
沿用之前扩大2倍的需求

 let size = CGSizeMake(100, 50) 
 let size2 = size * 2

甚至我们可以这样写

  let size2 = size * size

是不是很酷?

上述代码并没有难懂之处 也不算高深
旨在提示大家 要善于利用Swift的特性 合理的设计代码

欢迎关注个人公众号:DevTipss

Swift 为CGSize扩展数学运算符_第1张图片
微信公众号:DevTipss

本文完~

你可能感兴趣的:(Swift 为CGSize扩展数学运算符)