在Swift语言中,常见的操作符有+-*/><==&&||等等,如果不喜欢,你也可以定义自己喜欢的操作符。

操作符类型

  • 中置运算符(infix operator) e.g. +-/*
  • 前置运算符(prefix operator) e.g. --++
  • 后置运算符(postfix operator) e.g. --++

注意:在Swift初期(1.0,2.0)--++这些前(后)置运算符还是可以使用的,但是会有警告;但在Swift4.0已经不能使用了(编译无法通过),不过我们自己定义的前(后)置运算符是可以使用的。

自定义操作符

1.中置运算符

示例

/// 定义优先级组
precedencegroup MyPrecedence { // higherThan: AdditionPrecedence // 优先级,比加法运算高
lowerThan: AdditionPrecedence // 优先级, 比加法运算低
associativity: none // 结合方向:left, right or none
assignment: false // true=赋值运算符,false=非赋值运算符
} infix operator +++: MyPrecedence // 继承 MyPrecedence 优先级组
// infix operator +++: AdditionPrecedence // 也可以直接继承加法优先级组(AdditionPrecedence)或其他优先级组
func +++(left: Int, right: Int) -> Int { return left+right*2
}

使用

let result = 2+++3
print(result) // 8

Precedence Group

Apple官方链接[Table 3 Infix operators]







2.前置运算符

定义前置运算符是不继承优先级组

示例

prefix operator ==+
prefix func ==+(left: Int) -> Int { return left*2
}

使用

print(==+2) // 4

3.后置运算符

定义后置运算符是不继承优先级组

示例

postfix operator +==
postfix func +==(right: Int) -> Int { return right*3
}

使用

print(2+==) // 6

最新文章

  1. C#设计模式系列:代理模式(Proxy)
  2. FZU 2112 并查集、欧拉通路
  3. 20个Linux服务器安全强化建议(一)
  4. Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
  5. lucene 3.0.2 搜索
  6. yii2 利用小部件生成后台左边菜单栏
  7. 11g RAC R2 之Linux DNS 配置
  8. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
  9. bzoj2326: [HNOI2011]数学作业
  10. [译]使用Babel和Browserify创建你的ES6项目
  11. Nginx+Keepalived 做负载均衡器
  12. 第一个程序点亮一个LED灯
  13. POJ 3070 矩阵快速幂解决fib问题
  14. 无线同步模块SYN1000在电力监测相位测量领域的应用方案
  15. myeclipse项目部署到idea常见问题
  16. js 中 new fn与new fn()的区别
  17. spring-oauth-server实践:OAuth2.0 通过header 传递 access_token 验证
  18. 图像检索(4):IF-IDF,RootSift,VLAD
  19. python之数据类型补充、集合、深浅copy
  20. Squid实现正向代理及访问控制--技术流ken

热门文章

  1. mac 下openOffice服务的安装
  2. Linux上SVN安装
  3. python对csv读写
  4. List、Set、数组之间的转换
  5. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
  6. 查漏补缺:socket编程:TCP粘包问题和常用解决方案(上)
  7. Pygame相关
  8. Python爬虫-百度模拟登录(二)
  9. 自动清理IIS log 日志脚本
  10. GO - if判断,for循环,switch语句,数组的使用