SwiftTour基础学习(五)控制流
使用 if 和 switch 来进行条件操作,,使用 for-in 、for 、while 和 repeat-while 来进行循环。包裹条件和循环变量括号可以省略,但是语句的大括号是必须的。
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
print(teamScore)
在 if 语句中,条件必须是一个布尔表达式,这意味着像 if score {...} 这样的代码将报错,而不会隐形地与 0 做对比。
你可以一起使用 if 和 let 来处理值缺失的情况。这些值可由可选值来代表。一个可选的值是一个具体的值或者是 nil 以表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。
var optionalString: String? = "Hello"
print(optionalString == nil)
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}
如果变量的可选值是 nil,条件判断为 false, 大括号中的代码会被跳过。如果不是 nil,会将值解包并赋给 let 后面的常量,这样代码块中就可以使用这个值了。
另一种处理可选值的方法是通过使用 ?? 操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代替。
let nickName: String? = nil
let fullName: String = "John Appleseed"
let informalGreeting = "Hi \(nickName ?? fullName)"
switch 支持任意类型的数据以及各种比较操作,不仅仅是整数以及测试相等。
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
print("That would make a good tea sandwich.")
case let x where x. hasSurrix("pepper"):
print("Is it a spicy \(x)?")
default:
print("Everything tastes good in soup.")
}
注意 let 在上述例子的等式中是如何使用的,它将匹配等式的值赋给常量 x.
运行 switch 中匹配到的子句之后,程序会退出switch 语句,并不会继续向下运行,所以不需要在每个子句结尾写 break。
可以使用 for-in 来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
使用 while 来重复运行一段代码直到不满足条件。循环条件也可以在结尾,保证能至少循环一次。
var n = 2
while n < 100 {
n = n * 2
}
print(n)
var m = 2
repeat {
m = m * 2
} while m < 100
print(m)
可以在循环中使用 ..< 来表示范围。
var total = 0
for i in 0..< 4 {
total += i
}
print(total)
使用 ..< 创建的范围不包含上界,如果想包含的话需要使用 ...。
END
转载于:https://www.cnblogs.com/chmhml/p/7764571.html
SwiftTour基础学习(五)控制流相关推荐
- 将汉字转换成笔画代码_0基础学习五笔输入法之汉字的拆分
未来的五笔高手们大家好,上篇文章我们讲述了五笔输入法的字型类型.我们先来回顾一下.五笔输入法字型分为三种类型,即左右型.上下型.杂合型.其中左右型与上下型比较好区分,杂合型相对来说不好区分. 大家以后 ...
- Linux基础学习五:软件的相关安装(JDK,Tomcat,Yum)
设置静态ip 通过 dhclient 命令获取动态ip,动态ip存在的问题: 每次重启,需要重新获取 获取的ip地址不固定 解决方案:设置静态ip 配置步骤: 编辑 /etc/sysconfig/ne ...
- Python基础学习五 内置模块
time 模块 1 >>> import time2 >>> time.time()3 1491064723.8086694 >>> # time ...
- Linux基础学习五(1):java项目部署实战教程
项目部署:就是将集成开发工具(eclipse.idea)中开发编译好的项目,部署到tomcat中运行的过程. 本地部署 本地部署:将项目部署到本机安装的tomcat中,可以借助于开发工具的本身的提供的 ...
- go语言基础学习 (五) http请求
通过net/http包实现go语言的http请求 1. GET请求 普通请求 1. http.Get方法... response, _ := http.Get("http://httpbin ...
- PR基础学习(六) 时间轴面板
下面就单独简单介绍时间轴面板,所使用的的截图也只截时间轴面板部分. 音频轨道,视频轨道 一个视频,由视频轨道(video track)和音频轨道(audio track)组成,在时间轴面板里面,编辑也 ...
- 深度学习(9)TensorFlow基础操作五: Broadcasting
深度学习(9)TensorFlow基础操作五: Broadcasting 1. 操作思想 2. 具体例子 3. 理解 (1) How to understand? (2) Why Broadcasti ...
- 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...
视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...
- 计算机推演未来发展动象,大学生计算机基础学习心得五篇
学习作为一种获取知识交流情感的方式,已经成为人们日常生活中不可缺少的一项重要内容,尤其是在二十一世纪这个知识经济时代,自主学习已是人们不断满足自身需要.以下是小编整理的大学生计算机基础学习心得,希望可 ...
最新文章
- java if switch 效率_Java中 switch-case 如何优化?
- 大型分布式网站架构技术总结
- linux shell nr,awk中NR和FNR的区别小结和实例演示
- eclipse环境下配置tomcat服务器
- php小偷程序原理分析2
- python居中填充_Python代码中 如何将字符串填充为指定长度并保持原字符串居中呢?...
- SystemVerilog声明的位置
- python中定义数据结构_Python中的数据结构—简介
- 【转】Snackbar和Toast的花式使用,这一篇就够了
- 微型计算机各部件之间通过总线传递各种信息,2015年9月计算机一级考试基础及MSOffice应用选择真题...
- hbuilder设置html浏览器打开,HBuilder X如何配置浏览器操作配置方法
- Java Swing Mysql实现图书管理系统源码附带高清视频指导运行教程
- 基于jquery的带事件显示功能的日历板插件calendar.js
- php 获得焦点,jquery中blur()失去焦点与focus() 获取焦点事件
- 机器人收集 + Keypose 算法:准确估计透明物体的 3D 姿态
- 操作系统(02326)第1章:操作系统概论
- Win XP 精简版安装SQL Server
- python数据分析的常用方法_16种常用的数据分析方法汇总
- api质量等级_API质量等级与机油选用指引
- Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises
热门文章
- houdini 渲染wireframe
- matlab whos命令
- oracle xtts 测试,XTTS 跨平台表空间迁移测试
- 针对医疗数据进行命名实体识别
- mysql中日期相减_MySQL环境配置和10分钟快速入门
- data-index在react里怎样表达_对牛弹琴,在英语里该怎样地道表达?
- python super().__init__()参数_python类中super()和__init__()的区别
- R_ggplot2作图原理
- 线程库 c语言实现,130行C语言实现个用户态线程库——后续(一)
- python 整数转字符串_16、atoi-整数字符串转整数-leetcode8-中等