7

Swift 数字和运算符

 3 years ago
source link: http://blog.danthought.com/programming/2016/02/21/swift-numbers-and-operators/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

从这篇文章,你将学习到如何使用 Swift 数字和运算符,还会说到布尔值,让我们开始吧。

Swift Numbers and Operators

赋值运算符

= 赋值运算符可以初始化或者改变变量的值。

let b = 13
var a = 7
a = b // a 的值变成 13

算数运算符

+ 加法、- 减法、* 乘法和 / 除法。

2 + 2 // 等于 4
3 - 2 // 等于 1
3 * 3 // 等于 9
8 / 4 // 等于 2

% 取余运算符,只能是整数。

9 % 4 // 9 = 4 * 2 + 1,所以还剩 1

复合赋值运算符

一种简便的运算和赋值在一起的方式,下面示例的是加法,其他算术运算符类似。

var a = 2
a += 3 // a = a + 3,等于 5

比较运算符

== 相等、!= 不相等、> 大于、< 小于、>= 大于等于和 <= 小于等于。

1 == 1 // ture
2 != 1 // true
2 > 1 // true
1 < 2 // true
1 >= 1 // true
2 <= 1 // false

比较运算符的结果都是布尔值,布尔值在 Swift 中也是一种数据类型,注意只有两种值 truefalse

var flag: Bool = true
flag = false

三元条件运算符

一种简便的 if else 运算的写法。

var distance = 80
var result = distance > 60 ? "far" : "nearby"
var result = "unkown"
if distance > 60 {
  result = "far"
} else {
  result = "nearby"
} 

空合并运算符

在操作可选类型时候,一种简便的提供默认值的写法。

let defaultWeight = 60
var inputWeight: Int?

var weight = inputWeight ?? defaultWeight
// inputWeight 没有值,weight 结果是 60

inputWeight = 55
weight = inputWeight ?? defaultWeight
// inputWeight 有值,weight 结果是 55

逻辑运算符

组合布尔逻辑的运算符,! 非,&& 且,|| 或。

let allowed = false
if !allowed {
  print("Denied")
}

let young = true
let handsome = false
if young && handsome {
  print("Good Boy")
}

let poor = true
let lazy = true
if poor || lazy {
  print("Bad Boy")
}

自定义运算符

Swift 中支持自定义运算符,如下是重载 Swift 中已经存在的运算符:

struct Point {
  var x = 0
  var y = 0
}

func +(left: Point, right: Point) -> Point {
  return Point(x: left.x + right.x, y: left.y + right.y)
}

let p1 = Point(x: 2, y: 5)
let p2 = Point(x: 4, y: 3)
let p3 = p1 + p2

定义不存在的 Swift 中间运算符,这里使用 infix 关键词,不过还有 prefixpostfix 关键词:

infix operator >>>

func >>>(filter1: @escaping Filter, filter2: @escaping Filter) -> Filter {
  return { image in filter2(filter1(image)) }
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK