Swift_控制流
Swift_控制流
for-in 循环
//for-in 循环
fileprivate func testForIn() {
//直接循环提取内部数据
//[1,5]
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
//不需要提取数据 只需要循环次数
let base = 2
let power = 3
var answer = 1
for _ in 1...power {
answer *= base
}
print("\(base) to the power of \(power) is \(answer)")
//array遍历
let array = ["XuBaoAiChiYu", "1045214799"]
for item in array {
print("array:\(item)!")
}
//Dictionary遍历
let dict = ["name":"XuBaoAiChiYu", "QQ":"1045214799"]
for (key, value) in dict {
print("key:\(key);value:\(value)")
}
/* print
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
2 to the power of 3 is 8
array:XuBaoAiChiYu!
array:1045214799!
key:name;value:XuBaoAiChiYu
key:QQ;value:1045214799
*/
}
while循环
//while循环
fileprivate func testWhile() {
//先执行while条件判断 后执行内部代码
let count = 4
var index = 0
while index < count {
index += 1
print("while:\(index)")
}
/* print
while:1
while:2
while:3
while:4
*/
}
repeat-while循环
//repeat-while循环
fileprivate func testRepeatWhile() {
//执行内部代码后判断条件
let count = 4
var index = 0
repeat {
index += 1
print("RepeatWhile:\(index)")
} while index < count
/* print
RepeatWhile:1
RepeatWhile:2
RepeatWhile:3
RepeatWhile:4
*/
}
if 判断
//if 判断
fileprivate func testIf() {
//一个条件一个条件的判断 当条件为真时 执行内部程序
let temp = 90
if temp <= 32 {
//不执行
} else if temp >= 86 {
print("执行")
} else {
//不执行
}
/* print
执行
*/
}
swich判断
//swich判断
fileprivate func testSwitch() {
//基本switch (case不会穿透)
let someCharacter: Character = "a"
switch someCharacter {
case "a":
print("1")
case "a", "b", "c":
print("2") //这里不会输出 case找到后 执行完毕就返回(如果需要穿透 加 fallthrough)
default:
print("未找到")
}
/* print
1
*/
}
switch范围选择
//switch范围选择
fileprivate func testSwitchIntervalMatching() {
//范围选择
let approximateCount = 2
switch approximateCount {
case 1..<5:
print("[1, 5)")
case 5..<10:
print("[5, 10)")
default:
print("未找到")
}
/* print
[1, 5)
*/
}
switch元组选择
//switch元组选择
fileprivate func testSwitchTuples() {
//元组选择 坐标轴测试
let random = arc4random()//随机数
let somePoint = (Int(random%3), Int(random%3))//随机数获取点
switch somePoint {
case (0, 0):
print("(0, 0) is at the origin")
case (_, 0):
print("(\(somePoint.0), 0) is on the x-axis")
case (0, _):
print("(0, \(somePoint.1)) is on the y-axis")
case (-2...2, -2...2):
print("(\(somePoint.0), \(somePoint.1)) is inside the box")
default:
print("(\(somePoint.0), \(somePoint.1)) is outside of the box")
}
/* print
(2, 2) is inside the box
*/
}
switch值选择
//switch值选择
fileprivate func testSwitchValueBindings() {
let random = arc4random()//随机数
//值绑定 如果设置未知数 当匹配成功时 执行此代码
let anotherPoint = (Int(random%3), Int(random%1))
switch anotherPoint {
case (let x, 0):
print("\(x),x匹配")
case (0, let y):
print("\(y),y匹配")
case let (x, y):
print("(\(x), \(y)),其他")
}
/* print
1,x匹配
*/
}
switch值绑定和where
//switch值绑定和where
fileprivate func testSwitchValueBindingsWhere() {
//使用where条件二次判断
let random = arc4random()//随机数
let yetAnotherPoint = (Int(random%3), Int(random%3))
switch yetAnotherPoint {
case let (x, y) where x < y:
print("\(x) < \(y)")
case let (x, y) where x > y:
print("\(x) > \(y)")
case let (x, y):
print("\(x) = \(y)")
}
/* print
1 = 1
*/
}
continue
//continue
fileprivate func testContinue() {
//跳过本次循环 继续执行下次循环
for index in 1...5 {
if index == 2 {
continue
}
print("continue:\(index)")
}
/* print
continue:1
continue:3
continue:4
continue:5
*/
}
break
//break
fileprivate func testBreak() {
// 跳过当前for或者switch 继续执行
for x in 1...5 {
if x == 2 {
break
}
print("break-x:\(x)")
}
print("break-for")
let z = 0
switch z {
case 0:
break;
default:
break;
}
print("break-switch")
/* print
break-x:1
break-for
break-switch
*/
}
fallthrough
//fallthrough
fileprivate func testFallthrough() {
//击穿:执行当前case内的代码 并执行下一个case内的代码
let x = Int(arc4random()%1)//0
switch x {
case 0:
print("0")
fallthrough
case 1:
print("1")
fallthrough
default:
break;
}
/* print
0
1
*/
}
标签
//标签
fileprivate func testLabeledStatements() {
//标签语句 可以直接跳到写标签行的代码
var b = false
go : while true {
print("go")
switch b {
case true:
print("true")
break go //跳过go标签的代码
case false:
print("false")
b = true
continue go //继续执行go标签的代码
}
}
/* print
go
false
go
true
*/
}
提前退出
//提前退出
fileprivate func testEarlyExit() {
//guard和if很像 当条件判断为假时 才执行else中的代码
func greet(_ person: [String: String]) {
guard let name = person["name"] else {
print("no name")
return
}
print("name: \(name)!")
}
greet([:])
greet(["name": "XU"])
/* print
no name
name: XU!
*/
}
检查API可用性
//检查API可用性
fileprivate func testCheckingAPIAvailability() {
if #available(iOS 9.1, OSX 10.10, *) {
print("iOS 9.1, OSX 10.10, *")
} else {
print("低版本")
}
/* print
iOS 9.1, OSX 10.10, *
*/
}
Swift_控制流的更多相关文章
- C# 本质论 第三章 操作符和控制流
操作符通常分为3大类:一元操作符(正.负).二元操作符(加.减.乘.除.取余)和三元操作符( condition?consequence:alternative(consequence和alterna ...
- Swift3.0P1 语法指南——控制流
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- linux 几个控制流语句的格式例子(if语句)
linux 几个控制流语句的格式例子:if 语句例子:#!/bin/sh a=10b=20 if [ $a == $b ]then echo "a is equal to b"el ...
- CSAPP学习笔记(异常控制流1)
1:诸如子进程结束之后父进程需要被告知,有时候应用程序需要系统调用,内核通过上下文切换将控制从一个进程切换到另一个进程,还有一个进程发送信号到另一个进程时接收者转而到它的信号处理函数去执行等等,我们的 ...
- KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新UI的DOM- ...
- java基础-控制流语句
浏览以下内容前,请点击并阅读 声明 一般情况下,代码的执行按照从上到下的顺序,然而通过加入一些判断,循环和跳转语句,你可以有条件地执行特定的语句. 接下来分三部分介绍Java的控制流语句,他们是判断语 ...
- 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流
最初的步骤 Python是大小写敏感的 任何在#符号右面的内容都是注释 >>> help('print')在“print”上使用引号,那样Python就可以理解我是希望获取关于“pr ...
- python学习笔记系列----(二)控制流
实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了P ...
- CPS冥想 - 2 手撸控制流
原博客链接:http://blogs.msdn.com/b/ericlippert/archive/2010/10/22/continuation-passing-style-revisited-pa ...
随机推荐
- 一分钟学会Git操作流程
今天整理下公司操作git 流程,尽量用最最简洁的方式整理出来,方便以后有新来的同事学习使用. 我整理的这个Git操作,基本上只需要一分钟,就可以轻松上手啦!!! 一. 拉取提交操作 1.拉取远程代码 ...
- typeScript入门(四)泛型
泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能. 在像C#和Ja ...
- python调用其他文件的类和函数
在同一个文件夹下 调用函数 source.py文件: def func(): pass new.py文件: import source # 或者 from source import func 调用类 ...
- 【数据库】8.0 MySQL入门学习(八)——创建并使用数据库、获得数据库和表的信息
1.0 使用SHOW语句找出服务器上当前存在什么数据库: mysql> SHOW DATABASES; 每台机器上的数据库列表是不同的,但是很可能有mysql和test数据库.mysql是必需的 ...
- HTML表单特别效果—音量调节,购物数量
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0<input type="ra ...
- 小米3 无法显示日志 Logcat
需要ROOT权限 1. 使用文件浏览器进入 /system/etc/init.d/ 目录 2.使用文本编辑器打开里面的 01Supertweak 这个文件 在最下面找到 rm /dev/lo ...
- matlab练习程序(差异演化DE)
这两天在看M.Tim Jones的<人工智能>,书中不只介绍原理,而且都有相应的c代码实现. 虽然代码不完全,不过缺少的部分完全可以自己补完. 差异演化和昨天实现的PSO很类似,都属于优化 ...
- Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? 线程的sleep()方法和yield()方法有什么区别?
Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别? sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间 ...
- C# 调用 c++ 非托管dll时wchar类型参数的乱码处理
[DllImport("user32.dll", CallingConvention = CallingConvention.WinApi)] public static exte ...
- 免费的SSL证书,你值得拥有!Let's Encrypt 试用体验记录
早上收到 Let’s Encrypt 的邮件,说偶之前申请的已经通过了,于是马上开始试用.Let’s Encrypt 是一个新的数字证书认证机构,它通过自动化的过程消除创建和安装证书的复杂性,为网站提 ...