基础语法-流程控制

if-else

let age = 4

if age >= 22 {

print("Get married")

} else if age >= 18 {

print("Being a adult")

} else if age >= 7 {

print("Go to school")

} else {

print("Just a child")

}

if后面的条件可以省略小括号

条件后的大括号不可以省略

if后面的条件只能是Bool类型

var num = 5

while num > 0 {

print("num is \(num)")

num -= 1

}//打印了5次

var num = -1

repeat {

print("num is \(num)")

} while num > 0//打印了一次

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

这里不用num--,是因为从Swift开始,去除了自增(++),自减(--)运算符

for循环

闭区间运算符:a...b, a <= 取值 <= b

let names = ["Anna", "Alex", "Brian", "Jack"]

for i in 0...3 {

print(names[i])

}// Anna Alex Brian Jack

let rang = 1...3

for i in rang {

print(names[i])

}//Alex Brian Jack

let a = 1

let b = 2

for i in a...b {

print(names[i])

}//Alex Brian

for i in a...3 {

print(names[i])

}//Alex Brian Jack

for _ in 1...3 {

print("for")

}//打印了3次

i 默认是let, 有需要时可以声明为var

for var i in 1...3 {

i += 5

print(i)

}//6 7 8

半开区间运算符:a..<b, a <= 取值 < b

for i in 1..<5{

print(i)

}//1 2 3 4

for - 区间运算符用在数组上

let names = ["Anna", "Alex", "Brian", "Jack"]

for name in names[0...3] {

print(name)

}//Anna Alex Brian 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(-3) //true

区间类型

let rang1: ClosedRange<Int> = 1...3

let rang2: Range<Int> = 1..<3

let rang3: PartialRangeThrough<Int> = ...5

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

let stringRange1 = "cc"..."ff"

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")

带间隔的区间值

let hours = 11

let hourInterval = 2

//tickMark的取值:从4开始,累加2,不超过11

for tickMark in stride(from: 4, to: hours, by: hourInterval) {

print(tickMark)

}// 4 6 8 10

switch

case,default后面不能写大括号{}

默认可以不写break,并不会贯穿到后面的条件

var number = 1

switch number {

case 1:

print("number is 1")

//    break

case 2:

print("number is 2")

//    break

default:

print("number is other")

//    break

}//number is 1

可以使用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注意点

switch必须保证能处理所有情况

var number = 1

switch number {

case 1:

print("number is 1")

case 2:

print("number is 2")

default:

break

}

case, default后面至少要有一条语句

如果不想做任何事,加个break即可

如果能保证已处理所有情况,也可以不必使用default

enum Answer{case right, wrong}

let answer = Answer.right

switch answer {

case Answer.right:

print("right")

case Answer.wrong:

print("wrong")

}

由于已确定answer是Ansewer类型,因此可以省略Answer

switch answer {

case .right:

print("right")

case .wrong:

print("wrong")

}

复合条件

let string = "Jack"

switch string {

case "Jack":

fallthrough

case "Rose":

print("Right person")

default:

break

}

switch string {

case "Jack", "Rose":

print("Right person")

default:break

}//Right Person

let character: Character = "a"

switch character {

case "a", "A":

print("The letter A")

default:

print("Not the letter A")

}//The Letter A

let count = 62

switch count {

case 0:

print("none")

case 1..<5:

print("a few")

case 5..<12:

print("several")

case 12..<100:

print("dozens of")

case 100..<1000:

print("hundreds of")

default:

print("many")

}// dozens of

区间匹配,元组匹配

let point = (1, 1)

switch point {

case (0, 0):

print("the origin")

case (_, 0):

print("on the x-axis")

case (0, _):

print("on the y_axis")

case (-2...2, -2...2):

print("inside the box")

default:

print("outside of the box")

}//inside the box

可以使用下划线 _ 忽略某个值

关于case匹配问题,属于模式匹配(Pattern Matching)的范畴,后面会再次纤细展开讲解

值绑定

let point = (2, 0)

switch point {

case (let x, 0):

print("on the x-axis with an x value of \(x)")

case (0, let y):

print("on the y_axis with a y value of \(y)")

case let (x, y):

print("somewhere else at (\(x), \(y))")

}//on the x-axis with an x value of 2

必要时let也可以改为var

where

switch point{

case let (x, y) where x == y:

print("on the line x==y")

case let (x, y) where x == -y:

print("on the line x== -y")

case let (x, y):

print("(\(x), \(y) is just some arbitrary point)")

}

将所有正数加起来

var numbers = [10, 20, -10, -20, 30, -30]

var sum = 0

for num in numbers where num > 0 {//使用where来过滤num

sum += num

}

print(sum) //60

where只有过滤的作用,没有退出的作用,相当于continue

标签语句

outer: for i in 1...4 {

for k in 1...4 {

if k == 3 {

continue outer

}

if i == 3 {

break outer

}

print("i == \(i), k == \(k)")

}

}

i == 1, k == 1

i == 1, k == 2

i == 2, k == 1

i == 2, k == 2

原文地址:https://www.cnblogs.com/coolcold/p/12001412.html

时间: 2024-10-13 20:56:07

基础语法-流程控制的相关文章

黑马程序员——Java基础语法---流程控制与函数

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------       程序控制流 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } el

黑马程序员---java基础语法--流程控制与函数

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } else { 执行语句: } c)  if(条件表达式) { 执行语句: } else  if (条件表达式) { 执行语句 } …… else { 执行语句: } if

Java基础语法之控制流程

Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}"结束.复合语句会为局部变量创建一个作用域,该作用域会成为程序的一部分.在这个作用域中变量能够被创建使用,如果这个变量在这个作用域外使用,会发生程序错误.复合结构内可以嵌套多个复合结构. 判断结构 判断结构会根据不同的条件结果执行不同的代码块. If结构 if结构中的条件结构是一个布尔值,在条件满足也就是

Python基础-Python流程控制

上篇文章 Python基础-基础使用 我们已经知道了Python解释器,Python的变量.和Python的输入输出.Python的注释和字符集,这篇文章,我们主要讲Python的流程控制 本文防盗链:http://python789.blog.51cto.com Python基础-Python流程控制 1.条件判断 1.1.if基本使用 if就是一个条件判断的,当满足不同样的条件的时候执行不同的操作,如法如下: if 条件1:     满足条件1 代码框 elif 添加2:     满足条件2

2.6-Java语言基础(程序流程控制)

判断结构 选择结构 循环结构 2.6.1  判断结构 if语句 三种格式: 1.  if(条件表达式) { 执行语句: } 2.  if(条件表达式) { 执行语句: } else { 执行语句: } 3. if(条件表达式) { 执行语句: } else if (条件表达式) { 执行语句: } -- else { 执行语句: } if语句特点: a,每一种格式都是单条语句. b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现.好处是:可以写在其他表达式中. c,条件表达式无论写成什

JAVA语法基础之流程控制

在进行程序设计的时候,我们会经常进行逻辑判断,根据不同的结果做不同的事,或者重复做某件事,我们对类似这样的工作称为流程控制.在Java中,流程控制分为两大类:选择和循环.下面就依次来介绍这两类. 一.选择 选择控制分为两种:if...else...和switch 1.if...else...,这种控制在表现上分为:单分支结构.双分支结构和多分支结构 1)单分支 单分支结构.这是最简单的一种选择结构,它只是简单的判断某个条件是否成立,如果成立就执行一段代码,语句形式为: if(表达式){ ....

java编程入门6 java语言基础与流程控制

语言基础 基本数据类型 1.整数类型 1)不能以0作为十进制数的开头(0除外) 2)八进制必须以0开头 3)十六进制必须以0X或0x开头 4)整型数据类型根据它所占内存大小的不同,可分为byte.short.int和long4中类型 数据类型 内存空间(8位比特位等于1字节) 取值范围 byte 8位 -2^7~2^7-1 short 16位 -2^15~2^15-1 int 32位 -2^31~2^31-1 long 64位 -2^63~2^63-1 5)若赋给的值大于int型的最大值或小于i

python开发基础:流程控制

1 #!/bin/env/python 2 #_*_coding:utf-8_*_ 3 4 5 ''' 6 四,流程控制 7 如果我们想让程序判断处理哪条岔路是你真正要走的路的时候? 很简单,只需要在程序里预设一些条件判断语句,满足哪个条件, 8 就走哪条岔路.这个过程就叫流程控制. 9 10 ''' 11 # 4.1 if..else 语句 12 #单分支If语句 13 oldboy = 56 14 if oldboy > 50 : 15 print("满足条件后要执行的代码!"

Java 基本语法----流程控制

流程控制 选择结构(分支语句) 分支语句根据一定的条件有选择地执行或跳过特定的语句 Java分支语句分类 if-else 语句 switch 语句 if-else语句语法格式 if(布尔表达式){ 语句或语句块; } if(布尔表达式) { 语句或语句块; } else if(布尔表达式){ 语句或语句块; }else { 语句或语句块; } if-else语句应用举例 1 public class TestAge{ 2 public static void main(String args[]