美文网首页Swift开发实战
Swift 为CGSize扩展数学运算符

Swift 为CGSize扩展数学运算符

作者: sprint | 来源:发表于2016-04-21 12:20 被阅读146次

直奔主题

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

微信公众号:DevTipss

本文完~

相关文章

  • Swift 为CGSize扩展数学运算符

    直奔主题 如何将size扩大两倍? 你可能习惯这样写 看起来代码没什么问题 可以正常运行 ~~那么我们能否让siz...

  • 每天学一点Swift---- 运算符函数

    一.运算符重载 1. Swift的运算符提供了良好的可扩展性,Swift不仅允许开发者重新定义已有的运算符(运算符...

  • Swift:基础(八)运算符

    Swift 运算符 运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符: ...

  • 可选项的本质,运算符重载,扩展

    swift系列课程 溢出运算符 assignment:true代表在可选链操作中拥有跟赋值运算符一样的优先级 扩展

  • [转载]扩展运算符...

    原文:JavaScript 扩展运算符 扩展运算符格式 扩展运算符格式很简单,就是三个点(...) 扩展运算符作用...

  • swift 运算符

    Swift 基本运算符 标签(空格分隔): swift 运算符 zybuluo swift 运算符 特性 赋值运算...

  • iOS开发 -- Swift之运算符(二)

    基础运算符 赋值运算符 在Swift中赋值语句没有返回值,所以下面的判断语句会报错: 数学运算符 ++和--操作将...

  • Swift 运算符(1)

    运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。Swift 提供了以下几种运算符: 算术运算符 比较运算符...

  • Swift 运算符

    运算符是一个符号,用于高速编译器执行一个数学或者逻辑运算。Swift提供以下几种运算符: 算术运算符比较运算符逻辑...

  • es6之扩展运算符 三个点(...)

    es6之扩展运算符 三个点(...)对象的扩展运算符数组的扩展运算符总结es6之扩展运算符 三个点(…)对象的扩展...

网友评论

    本文标题:Swift 为CGSize扩展数学运算符

    本文链接:https://www.haomeiwen.com/subject/luagcttx.html