美文网首页
swift基础——逻辑语法

swift基础——逻辑语法

作者: 夜凉听风雨 | 来源:发表于2022-03-09 17:26 被阅读0次

if-else

let age = 10
if age < 18 {
    print("未成年")
} else if age == 18 {
    print("刚成年")
} else {
    print("成年人")
}
  • if后面的条件可以省略小括号
  • 条件后面的大括号不可以省略
  • if后面的条件只能是Bool类型

while

var age = 0
while age < 10 {
    age += 1
    print(age)
}
var age = 0
repeat {
    age += 1
    print(age)
} while age < 10

repeat-while相当于C语言中的do-while

for循环

  • 闭区间运算符:a...b相当于 a<=取值<=b
for i in 0...3 {
    print(i)
} // 打印结果 0 1 2 3
let range = 0...3
for i in range {
    print(i)
} // 打印结果 0 1 2 3
let a = 0
for i in a...3 {
    print(i)
} // 打印结果 0 1 2 3
// i默认为let,有需要时可以声明为var
for var i in 0...3 {
    i += 3
    print(i)
} // 打印结果 3 4 5 6
// i如果用不到,可以用下划线代替
for var _ in 0...3 {
    print("循环")
} 
  • 半开区间运算符:a..<b相当于 a<=取值<b
for var i in 0..<3 {
    print(i)
} // 打印 0 1 2
  • 单侧区间

  • a... 表示从a开始往尽可能大的数去

  • ...b 表示从尽可能小的数到b

let range = ...5 // range表示从无穷小到5
print(range.contains(-10)) // true
print(range.contains(4)) // true
print(range.contains(8)) // false
  • 区间运算符用在数组上
let arr = ["A", "B", "C", "D"]
for var item in arr[0...2] {
    print(item)
} // 打印 A B C
// 0...从0开始往上尽可能的大,但是不会超过数组边界
let arr = ["A", "B", "C", "D"]
for var item in arr[0...] {
    print(item)
} // 打印 A B C D
// ...2从尽可能的小的数开始到2,但是不会超出数组边界,也就是从0到2
let arr = ["A", "B", "C", "D"]
for var item in arr[...2] {
    print(item)
} // 打印 A B C
  • 区间类型
let range1: ClosedRange <Int> = 1...3 // Int型闭区间
let range2: Range<Int> = 1..<3 // Int型半开区间
let range3: PartialRangeThrough<Int> = ...5 // Int型单侧区间

字符字符串也能使用区间运算符但默认不能用在for-in中

let stringRange1 = "cc"..."ff" // ClosedRange<String>
stringRange1.contains("cb") // false
stringRange1.contains("dz") // true
stringRange1.contains("fg") // false

let stringRange2 = "a"..."f"
stringRange2.contains("d") // true
stringRange2.contains("h") // false

// \0到~囊括了所有可能要用到的ASCII字符
let characterRange: ClosedRange<Character> = "\0"..."~"
characterRange.contains("G") // true
  • 间隔区间
// tickMark的取值: 从4开始,累加2,不超过11
for tickMark in stride(from: 4, through: 11, by: 2) {
    print (tickMark)
} // 打印4 6 8 10

switch

  • case default后面不能写大括号{}
var number = 2
switch number {
case 1:
    print ("number is 1")
    break
case 2:
    print("number is 2")
    break
default:
    print ("number is other")
    break
} // 打印:number is 2
  • 默认可以不写break,并不会贯穿到后面
var number = 2
switch number {
case 1:
    print ("number is 1")
case 2:
    print("number is 2")
default:
    print ("number is other")
} // 打印:number is 2
  • 使用fallthrough可以达到贯穿效果
var number = 1
switch number {
case 1:
    print ("number is 1")
    fallthrough
case 2:
    print("number is 2")
default:
    print ("number is other")
} // 打印:number is 1 number is 2 
  • switch必须要保证处理了所有可能出现的情况,下面是缺少了default的情况报错
报错.png
  • case和default后面至少要跟一条语句,如果什么都不想做,可以加一个break
var number = 1
switch number {
case 1:
    print ("number is 1")
case 2:
    break
default:
    break
}
  • switch也支持Character、String类型
var string = "Jonas"
switch string {
case "Jonas":
    print ("my name is Jonas")
case "Bob":
    print ("my name is Jonas")
default:
    break
} // 打印:my name is Jonas
  • 复合条件
var string = "Bob"
switch string {
case "Jonas":
    fallthrough
case "Bob":
    print ("we are boy")
case "Mary":
    print ("i am girl")
default:
    break
} // 打印:we are boy

------或者是下面的写法-------

var string = "Bob"
switch string {
case "Jonas", "Bob":
    print ("we are boy")
case "Mary":
    print ("i am girl")
default:
    break
} // 打印:we are boy
  • 区间匹配
var num = 8
switch num {
case 0:
    print("是0")
case 1..<5:
    print ("在大于等于1小于5")
case 5...:
    print ("大于等于5")
default:
    print("小于0")
} // 打印:大于等于5
  • 元组匹配
    可以使用下划线忽略某个值,只要一边匹配就行
let point = (2, 5)
switch point {
case (0, 0):
    print("坐标是(0, 0)")
case (2, _):
    print ("x坐标是2")
case (_, 3):
    print ("y坐标是3")
case (0...2, 1...3):
    print("在这个区域内")
default:
    print("其他")
} // 打印:x坐标是2
  • 值绑定
let point = (2, 5)
switch point {
case (0, 0):
    print("坐标是(0, 0)")
case (2, let y):
    print ("x坐标匹配y坐标是\(y)")
case (let x, 3):
    print ("y坐标匹配x坐标是\(x)")
case (0...2, 1...3):
    print("在这个区域内")
case let (x, y):
    print("x坐标是\(x),y坐标是\(y)")
} // 打印:x坐标匹配y坐标是5

where

可以使用where关键字增加条件

let point = (2, 5)
switch point {
case let (x, y) where x == y:
    print("x=y")
case let (x, y) where x == -y:
    print ("x=-y)")
case let (x, y) where x == y - 3:
    print ("x=y-3")
case let (x, y):
    print("x坐标是\(x),y坐标是\(y)")
} // 打印:x=y-3
for i in 0...10 where i > 5 {
    print(i)
} // 打印:6,7,8,9,10

标签语句

标签语句格式是一个名字加冒号,如outer:
下面的代码是2层嵌套循环,在最外层循环加一个标签,当内部循环j=3时,break,正常情况下是跳出当前循环也就是内部的j循环,继续执行外层的i循环,但是现在加了break outer,表示跳出outer标签语句的循环,所以整个大的循环都停止了。

outer: for i in 0...10 {
    print("i=\(i)")
    for j in 0...10 {
        print("j=\(j)")
        if j == 3 {
            break outer
        }
    }
}
print("循环结束")

相关文章

  • swift基础——逻辑语法

    if-else if后面的条件可以省略小括号 条件后面的大括号不可以省略 if后面的条件只能是Bool类型 whi...

  • Swift基本语法之函数

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • Swift基本语法之数组和字典

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • Swift基本语法之元组和可选类型

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • Swift基本语法之闭包

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • swift 基础语法

    swift 基础语法

  • Swift| 基础语法(五)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、...

  • Swift| 基础语法(四)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、...

  • Swift| 基础语法(三)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、...

  • Swift| 基础语法(一)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、...

网友评论

      本文标题:swift基础——逻辑语法

      本文链接:https://www.haomeiwen.com/subject/mkharrtx.html