文档章节

swift 定义自定义运算符

樱黯雨
 樱黯雨
发布于 2016/07/01 09:38
字数 372
阅读 18
收藏 0

###swift自定义运算符 有时候我们需要定义一个新的运算符来处理我们的数据操作,比如我们需要计算2个Int的差与和的乘积,如:

// 输入  2、3      输出 (2+3)*(2-3)
// 我们可以定义一个新的运算符
func +*- (num1:Int, num2:Int) ->Int {
    return (num1+num2)*(num1-num2)
}
//

这个时候编译器会报错,但是你可能会问,为什么我们写下面这样的代码就不会报错呢?

func + (num1:Int, num2:Int) ->Int {
    //
}

这是因为swift已经为我们定义了 +, -, *, / 等运算符,我们可以直接重载,而这个新的运算符需要我们自己定义,那么如何定义呢?直接上代码:

infix operator +*- {
    associativity none
    precedence 160
}
  • infix 表示要定义一个中位操作符,既前后都是输入
  • associativity 定义了结合律,即如果多个同类的操作运算符顺序出现,会按照怎样的计算顺序。如+, -, 都是定义的left
  • precedence 运算符的优先级,数值越高优先级越高,swift中+, -,的优先级是140,, /的优先级是150,也就是说我们定义的 +-的优先级比较高

这样,我们就可以进行我们的运算了

let result = 2 +*- 3
// 输出 -5

PS:swift的运算符是不能定义在局部的,你至少希望你的全局都可以使用这个运算符,否则自定义就没什么意义了!!

© 著作权归作者所有

樱黯雨
粉丝 3
博文 36
码字总数 22677
作品 0
郑州
程序员
私信 提问
Swift专题讲解二十三——高级运算符

Swift专题讲解二十三——高级运算符 一、引言 除了前边博客中介绍的基本运算符外,Swift中还支持更多高级运算符,也支持开发者进行运算符的自定义。Swift中的算符运算符有一个特点,其不会产...

珲少
2016/05/31
1K
1
infix 自定义运算符

最近在看swift,都知道快速学习一门语言的根本就是看代码,写代码。 于是乎看到一个奇特的关键字infix. 不明白是干啥的额,最终找到了答案 infix是可以自定义运算符的关键字啊 例如定义个?运...

chengxu媛
2016/01/19
27
0
swift 自定义正则表达式运算符 =~

swift 至今并没有在语言层面上支持正则表达式,可能在开发app时正则表达式使用的场景并不多。 封装 在 Cocoa 中我们可以使用 NSRegularExpression 来做正则匹配,所以我们在 NSRegularExpre...

Inlight先森
2017/12/20
0
0
swift官方推荐翻译文档之基本运算符

运算符是检查、改变、合并值的特殊符号或短语。例如,加号将两个数相加(如)。更复杂的运算例子包括逻辑与运算符(如),或让 i 值加1的便捷自增运算符等。 Swift 支持大部分标准 C 语言的运...

哪一种黑
2016/03/10
12
1
重读 Swift 之二:Operator Declaration(运算符重载)

一、为什么要重载运算符 我们都知道所谓的运算符平常的也就是 之类的,比如我们随便写个 打印肯定输出的是 ,那么我们为什么还要重载运算符呢?下面我们就举个例子,如下我定义个结构体 然后...

HenryCheng
2016/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用CSS禁止手机长按出现气泡: 复制、选择等功能

可以用 * ,也可作用于一个div div{  -webkit-touch-callout:none;  /*系统默认菜单被禁用*/  -webkit-user-select:none; /*webkit浏览器*/  -khtml-user-select:none; /*早期浏览...

蓝小驴
55分钟前
9
0
前端的一些雕虫小技,从100%和滚动条说起

1、100%和滚动条 当我们在css中把html和body同时设为100%时,会出现滚动条 html, body { width: 100%; height: 100%; } 原因是html和b...

wphmoon
今天
8
0
电力区块链应用案例【2019】

随着区块链技术的日益普及,出现了大量创业企业尝试使用区块链技术来解决能源与电力行业中存在的问题。在本文中,我们将介绍其中的三个能源区块链项目。 能源行业以价格不透明著称:消费者很...

汇智网教程
今天
12
0
聊聊rocketmq的adjustThreadPoolNumsThreshold

序 本文主要研究一下rocketmq的adjustThreadPoolNumsThreshold DefaultMQPushConsumer rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.ja......

go4it
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部