基本操作

  • 赋值运算
//赋值运算符(a = b)用b的值初始化或更新a的值:
let b = 10
var a = 5
a = b
// a is now equal to 10

//如果赋值的右边是一个具有多个值的元组,那么它的元素可以同时分解为多个常量或变量:
let (x,y) = (1,2)
// x is equal to 1, and y is equal to 2

//与C和Objective-C中的赋值操作符不同,Swift中的赋值操作符本身并不返回值。下列表达式无效:
if x = y {
    // This is not valid, because x = y does not return a value.
}

//该特性可以防止在实际使用equal to操作符(==)时意外使用赋值操作符(=)。通过使if x = y无效,Swift可以帮助您避免代码中的此类错误。
  • 算数运算
    Swift支持所有数字类型的四种标准算数运算。加减乘除
 1 + 2       // equals 3
 5 - 3       // equals 2
 2 * 3       // equals 6
 10.0 / 2.5  // equals 4.0
  • 求余操作
//余数运算符(a % b)计算出b在a中的倍数,并返回剩余的值(称为余数)。
9 % 4    // equals 1
-9 % 4    // equals 1
  • 一元操作
//一元减操作 数值的符号可以使用前缀-来切换
let three = 3
let minusThree = -three       // minusThree equals -3
let plusThree = -minusThree   // plusThree equals 3, or "minus minus three"

//一元加操作符 简单地返回它操作的值,没有任何变化。
let minusSix = -6
let alsoMinusSix = +minusSix  
//虽然一元加号运算符实际上什么都不做,但是当你对负数也使用一元减号运算符时,你可以用它在你的代码中为正数提供对称性。
  • 复合赋值操作
var c = 1
c += 2
// a is now equal to 3
//表达式a += 2是a = a + 2的简写。实际上,加法和赋值被合并到一个操作符中,该操作符同时执行两个任务。
  • 比较操作
/*
 Equal to (a == b)
 Not equal to (a != b)
 Greater than (a > b)
 Less than (a < b)
 Greater than or equal to (a >= b)
 Less than or equal to (a <= b)
 
 Swift also provides two identity operators (=== and !==), which you use to test whether two object references both refer to the same object instance.
 */
1 == 1   // true because 1 is equal to 1
2 != 1   // true because 2 is not equal to 1
2 > 1    // true because 2 is greater than 1
1 < 2    // true because 1 is less than 2
1 >= 1   // true because 1 is greater than or equal to 1
2 <= 1   // false because 2 is not less than or equal to 1
//Comparison operators are often used in conditional statements, such as the if statement:
let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry \(name), but I don't recognize you")
}

(1, "zebra") < (2, "apple")   // true because 1 is less than 2; "zebra" and "apple" are not compared
(3, "apple") < (3, "bird")    // true because 3 is equal to 3, and "apple" is less than "bird"
(4, "dog") == (4, "dog")      // true because 4 is equal to 4, and "dog" is equal to "dog"
  • 三元条件操作
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)

等同于:
let contentHeight = 40
let hasHeader = true
let rowHeight: Int
if hasHeader {
    rowHeight = contentHeight + 50
} else {
    rowHeight = contentHeight + 20
}
  • Nil Coalescing运算
(a ?? b)
 1. a必须是Optional类型的。
 2. b的类型必须要和a解包后的值类型一致
 let defaultColorName = "red"
var userDefinedColorName: String?   // defaults to nil

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is not nil, so colorNameToUse is set to "green"

  • 范围操作
//闭合范围操作 (a...b)
for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25

//半开范围操作 (a..<b)
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack

//单边操作
for name in names[2...] {
    print(name)
}
// Brian
// Jack

for name in names[...2] {
    print(name)
}
// Anna
// Alex
// Brian

//半开单边操作
for name in names[..<2] {
    print(name)
}
// Anna
// Alex

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true
  • 逻辑操作
    Logical NOT (!a)
    Logical AND (a && b)
    Logical OR (a || b)
//非操作
let allowedEntry = false
if !allowedEntry {
    print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"

//与操作 只有当两个表达式为真时,整个表达式才为真。如果其中一个表达式为false,那么整个表达式也为false。如果第一个表达式为false,第二个表达式将不会被求值
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"

//或操作  表达式有一个为真时,整个表达式为真。如果第一个表达式为真,将不会对第二个表达式进行求值,因为整个表达式为真
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

//组合逻辑操作
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!"

//可以添加圆括号,使表达式更加清晰
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}
// Prints "Welcome!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值