changjiashuai's blog

Runnig...

The future belongs to those who believe in the beauty of their dreams.


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
最近的文章

Swift基础---常量、变量

常量声明 (不可变)let constants = 10constants = 20 ----> error 变量声明 (可变)var x = 0var a = 1, b = 2, c = 3x = 10 注释类型声明(Type Annotations)var welcomeMessage: String 任何字符都可以作为变量、常量名let π = 3.14159let 你好 = "你好世界"let 🐶🐮 = "dogcow” 输出常量、变量println(x)prin...…

继续阅读
更早的文章

swift体验1

一门新语言传统的入门方式是在屏幕上打印“Hello,wrold”。在Swift中你可以用下面一行代码:println("Hello, world")如果之前你用过C或Objective-C语言,这个语法和Swift中类似,这一行代码是一个完整的程序。对这样的输入/输出或字符串处理你不需要导入单独的库文件。代码写在全局范围内被用做整个程序的入口点。所以你不需要一个主函数。你不需要写分号(;)结束每一个声明。这个旅程会给你足够的信息让你开始用Swift编写代码完成各种各样的编程任务。如果有些东...…

继续阅读