Swift Basic Operators

assignment operator

  • it the right side of a assignment operator is a tuple with multiple values, you can decompose its elements into multiple constants or variables
let (x, y) = (1, 2)
  • the assignment operator does not return a value

arithmetic operators

  • 4 standerd arithmetic operators for all number type
    • addition (+)
    • subtraction (-)
    • multiplication(*)
    • division(/)
  • arithmetic operators don’s allow values to overflow by default
  • addition operator is supported for String concatenation
let helloworld = "hello " + "world!"

remainder operator

let a = 5, b = -3
let c = a % b // c = 2

the sign of b is ignored for negative values of b.
that means a % b and a % -b always return the same answer

compound assignment operators

  • compound assignment operators combine assignment with other operator
var a = 1
a += 1

the compound operators don’t return a value. you can’t write let b = a += 2

comparison operators

  • identity operators === and !==
  • you can use identity operators to find out whether 2 object references both refer to the same object
  • you can compare 2 tuples if they have the same type and the same number of values
  • tuples compare from left to right, one value at a time, until the comparison finds 2 values that are not equal
(1, "z") < (2, "a")
(3, "a") < (3, "b")
(4, "d") == (4, "d")
  • tuples can be compared with a given operator only if the operator can be applied to each value in the tuples
("blue", -1) < ("purple", 1)        // OK, evaluates to true
("blue", false) < ("purple", true)  
// Error because < can not compare Boolean values

nil-coalescing operator

  • the nil-coalescing operator (a ?? b)unwrap an optional a if a contains a value, or return b if a is nil
  • a is always of an optional type, and b must match the type that is stored inside a
  • the nil-coalescing operator can be converted to ternary conditional operator
a ?? b
a != nil ? a! : b

note: if a is non-nil, the value of b is not evaluated

let defaultColorName = "red"
var userDefineColorName: String?
var colorName = userDefineColorName ?? defaultColorName

range operators

closed range operator

  • the closed range operator (a…b) defines a range from a to b, and include a and b

half-open range operator

  • hte half-open range operator (a…<b) defines a range from a to b, includes a but doesn’t include b
  • if a equals to b, the resulting range will be empty
  • half-open range operator is useful when you work with zero-based lists such as arrays
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("person \(i) is \(names[i])")
}

one-sided ranges

  • the range continues as far as possible in one direction
for name in names[...2] {
    print(name)
}
//Anna Alex Brian
for name in names[2..] {
    print(name)
}
//Brian Jack
  • the half-open range alse has a one-sided form that is written with only its final value, and the final value is not in the range
for name in names[..<2] {
   print(name) 
}
//Anna Alex
  • you can check whether a one-sided range contains a particular value
let range = ...10
range.contains(11) //false
range.contains(0) //true
range.contains(-11) // true

logical operators

  • there are 3 standerd logical operators (!, &&, ||)
if enteredDoorCode && passedRedinaScan || hasDoorKey || knowOverridePasswrod {
    print("Welcome")
} else {
    print("access denied")
}
if (enteredDorrCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
    print("welcome")
} else {
    print("access denied")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值