Swift体验2

控制流

使用ifswitch做条件判断,使用for-in,for,while,do-while做循环 操作。括号中的条件或循环变量是可选的。括号的身体是必需的。

let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores{
  if score > 50{
    teamScore += 3
  }else{
    teamScore +=1
  }
}
teamScore

在if语句,条件必须是一个布尔表达式–这意味着像if score {...}的代码是一个错误的 不会隐式的和0比较。

你可以使用iflet来判断可能会丢失的值。这些值的表示为可选的。一个可选值包含一个 值或包含零表明缺失值。写一个问号(?)在类型的后面标记为值是可选的。

var optionalString: String? = "Hello"
optionalString == nil

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName{
  greeting = "Hello, \(name)"
}

实验 改变optionalName的值为nil,观察greeting的值?增加一个else分支设置当oprionalName==nil 时greeting的值

如果可选值为nil,判断条件为false此块代码跳过,否则可选值赋值给let后的常量,这个值在 后面的代码块中可以获取到。

switch支持任何类型的数据和各种各样的比较操作,不受限与整数值和测试数量。

let vegetable = "red pepper"
switch vegetable{
  case "celery":
      let vegetableComment = "Add some raisins and make ants on a log."
  case "cucumber", "watercress":
      let vegetableComment = "That would make a good tea sandwich."
  case let x where x.hasSuffix("pepper"):
      let vegetableComment = "Is it a spicy \(x)?"
  default:
      let vegetableComment = "Everything tastes good in soup."
}

实验 试着去掉default分支,看有什么错误?

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 > largest {
    largest = number
  }
}
largest

实验 添加另一个变量来跟踪kind的数量,以及那最大的数字是什么。

while重复执行代码直到条件改变

var n = 2
while n < 100 {
  n = n * 2
}

n

var m = 2
do{
  m = m * 2
}while m < 100

m

可以使用..来表示循环索引的范围

var firstForLoop = 0
for i in 0..3 {
  firstForLoop += i
}
firstForLoop


var secondForLoop = 0
for var i = 0; i < 3; ++i {
  secondForLoop += i
}
secondForLoop

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老司机的技术博客

宝宝都能学会的python编程教程8:条件判断与循环

先公布上期编程练习的答案,没错,L是一个指向三个列表的二维元祖。 条件判断 实际的项目中条件判断可以说是使用最多的语法之一了,不管是最简单的判断还是负责的业务逻...

35850
来自专栏javathings

解释一下 HashMap 的工作原理

HashMap 是基于散列表的数据结构。所谓散列表,它通过键值对的方式存储数据,把 key 通过散列算法计算出一个存储地址,将 value 放入这个地址中。散列...

47010
来自专栏用户2442861的专栏

C++ STL源码实现以及分析之vector

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

46510
来自专栏老司机的技术博客

人人都能学会的python编程教程8:条件判断与循环

实际的项目中条件判断可以说是使用最多的语法之一了,不管是最简单的判断还是负责的业务逻辑和算法,条件判断都如影随形。

1.2K100
来自专栏决胜机器学习

PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2)

PHP数据结构(八)——赫夫曼树实现字符串编解码(实践2) (原创内容,转载请注明来源,谢谢) 公众号规定不能超过3000字,只能分两篇,见谅。 由于需要分两篇...

35460
来自专栏玄魂工作室

Python黑帽编程2.4 流程控制

Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容。 2.4.1 IF …..ELSE 先上一段代码: ...

29040
来自专栏企鹅号快讯

看完这篇文章我知道至少85%的人是没有入门Python的!花两周整理

以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#。和PHP有句"PHP是最好的语言" 这种家喻户晓的骚话一样,Python也有...

30570
来自专栏Python自动化测试

python内部函数学习(九)

python提供了很多的内置函数,这些内置的函数在某些情况下,可以起到很大的作用,而不需要专门去写函数实现XX功能,直接使用内置函数就可以实现,下...

12130
来自专栏JavaEdge

(六)-class文件结构1 什么是JVM的“无关性”?2 纵观Class文件结构

30580
来自专栏运维技术迷

连仕彤博客[Python练习] 将字典扁平化

1.isinstance():判断v的类型是不是字典,如果不是就直接写入新字典; 2.递归(函数循环) 3.嵌套函数

11020

扫码关注云+社区

领取腾讯云代金券