使用 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基础学习(五)控制流相关推荐

  1. 将汉字转换成笔画代码_0基础学习五笔输入法之汉字的拆分

    未来的五笔高手们大家好,上篇文章我们讲述了五笔输入法的字型类型.我们先来回顾一下.五笔输入法字型分为三种类型,即左右型.上下型.杂合型.其中左右型与上下型比较好区分,杂合型相对来说不好区分. 大家以后 ...

  2. Linux基础学习五:软件的相关安装(JDK,Tomcat,Yum)

    设置静态ip 通过 dhclient 命令获取动态ip,动态ip存在的问题: 每次重启,需要重新获取 获取的ip地址不固定 解决方案:设置静态ip 配置步骤: 编辑 /etc/sysconfig/ne ...

  3. Python基础学习五 内置模块

    time 模块 1 >>> import time2 >>> time.time()3 1491064723.8086694 >>> # time ...

  4. Linux基础学习五(1):java项目部署实战教程

    项目部署:就是将集成开发工具(eclipse.idea)中开发编译好的项目,部署到tomcat中运行的过程. 本地部署 本地部署:将项目部署到本机安装的tomcat中,可以借助于开发工具的本身的提供的 ...

  5. go语言基础学习 (五) http请求

    通过net/http包实现go语言的http请求 1. GET请求 普通请求 1. http.Get方法... response, _ := http.Get("http://httpbin ...

  6. PR基础学习(六) 时间轴面板

    下面就单独简单介绍时间轴面板,所使用的的截图也只截时间轴面板部分. 音频轨道,视频轨道 一个视频,由视频轨道(video track)和音频轨道(audio track)组成,在时间轴面板里面,编辑也 ...

  7. 深度学习(9)TensorFlow基础操作五: Broadcasting

    深度学习(9)TensorFlow基础操作五: Broadcasting 1. 操作思想 2. 具体例子 3. 理解 (1) How to understand? (2) Why Broadcasti ...

  8. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  9. 计算机推演未来发展动象,大学生计算机基础学习心得五篇

    学习作为一种获取知识交流情感的方式,已经成为人们日常生活中不可缺少的一项重要内容,尤其是在二十一世纪这个知识经济时代,自主学习已是人们不断满足自身需要.以下是小编整理的大学生计算机基础学习心得,希望可 ...

最新文章

  1. java if switch 效率_Java中 switch-case 如何优化?
  2. 大型分布式网站架构技术总结
  3. linux shell nr,awk中NR和FNR的区别小结和实例演示
  4. eclipse环境下配置tomcat服务器
  5. php小偷程序原理分析2
  6. python居中填充_Python代码中 如何将字符串填充为指定长度并保持原字符串居中呢?...
  7. SystemVerilog声明的位置
  8. python中定义数据结构_Python中的数据结构—简介
  9. 【转】Snackbar和Toast的花式使用,这一篇就够了
  10. 微型计算机各部件之间通过总线传递各种信息,2015年9月计算机一级考试基础及MSOffice应用选择真题...
  11. hbuilder设置html浏览器打开,HBuilder X如何配置浏览器操作配置方法
  12. Java Swing Mysql实现图书管理系统源码附带高清视频指导运行教程
  13. 基于jquery的带事件显示功能的日历板插件calendar.js
  14. php 获得焦点,jquery中blur()失去焦点与focus() 获取焦点事件
  15. 机器人收集 + Keypose 算法:准确估计透明物体的 3D 姿态
  16. 操作系统(02326)第1章:操作系统概论
  17. Win XP 精简版安装SQL Server
  18. python数据分析的常用方法_16种常用的数据分析方法汇总
  19. api质量等级_API质量等级与机油选用指引
  20. Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises

热门文章

  1. houdini 渲染wireframe
  2. matlab whos命令
  3. oracle xtts 测试,XTTS 跨平台表空间迁移测试
  4. 针对医疗数据进行命名实体识别
  5. mysql中日期相减_MySQL环境配置和10分钟快速入门
  6. data-index在react里怎样表达_对牛弹琴,在英语里该怎样地道表达?
  7. python super().__init__()参数_python类中super()和__init__()的区别
  8. R_ggplot2作图原理
  9. 线程库 c语言实现,130行C语言实现个用户态线程库——后续(一)
  10. python 整数转字符串_16、atoi-整数字符串转整数-leetcode8-中等