Swift学习之路 -- 简单值和控制流

本文学习自《 The Swift Programming Language-swift2.0官方手册 中文版》的电子版
是记录自己的Swift学习历程、整理相关资料便于查看


学习Swift有一个很方便的工具playground,可以同步输出执行代码后的结果,不用在每次打印输出
配置:
这里写图片描述

选择 New File
这里写图片描述

OK


简单值

使用let声明常量,使用var声明变量

var myVar = 45
    myVar = 50

常量只可以赋值一次 也就是说你可以用常量表示某个只需要赋值一次,但需要使用很多次的值

let myLet = 60

练习:创建一个显示类型为Float且初始值为4的常量

let exp : Float = 4

值永远不会被隐式的转换成其他类型,如果需要转换类型,请显式转换

let label = "My age is "
var age   = 22
let ageLabel = label + String(age)

把值转换成字符串更简单的方法:把值写到括号中,且在括号前加反斜杠

let apples  = 3
let oranges = 5
let appleSummary = "I have \(apples) apples"
let fruits = "I have \(apples + oranges) fruits"

练习:使用()表示我的身高为175.5cm

let height : Float = 175.5
let myHeight = "My height is \(height)cm"

创建一个空数组或者字典,使用初始化方法

 let emptyArray = [String]()       //表明元素类型
 let emptyDict  = [String:Float]() //表明key和Value的类型

使用[]和[:]来创建空数组和空字典 并用下标或key来访问元素

var array = ["1","2","3"]
    print(array[0])
    array[2] = "change"
    print(array[2])

var dict = ["name":"Unique","age":12]
    dict["sex"] = "Man"
    print(dict)

控制流

使用if和switch来进行条件操作,使用for-in、for、while、和repeat-while来循环
包裹条件和循环变量括号可以省略,但语句体的大括号是必须的

let numberArray = [78,45,12,56,89]
var teamScore   = 0
    for score in numberArray {
            if score > 50 {
                teamScore += 3
            } else {
                teamScore += 1
            }
        }
    print(teamScore)

在if语句中,条件必须是一个BOOL表达式,不会隐形的与0做对比–这意味着像if score{…}这样的代码将会报错
你可以同时使用if和let来处理值缺失的情况

var optionalString : String? = "Hello"
    print(optionalString == nil)

var optionalName :String? = "Unique"
var greeting = "Hello"
    if let name = optionalName {
            greeting = "Hello,\(name)"
    } else {
            greeting = "GOOD"
    }

练习: 把optionalName改成nil,greeting会是什么?添加一个else语句,当optionalName是nil时给greeting赋一个不同的值
当变量的可选值是nil,条件会判断false,大括号的代码会被跳过。如果不是nil,会将值赋给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 = "The would make a good tea sandwich."
     case let x where x.hasSuffix("pepper"):
     let vegetableComment = "Is it a spicy \(x)?"
default:
     let vegetableComment = "Evenything tastes good in soup."
        }

let x where x.hasSuffix(“pepper”) 是说vegetable的值是不是以”pepper”做后缀(也就是结尾) 是就赋值给常量 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 (key,numbers) in interestingNumbers {
         for number in numbers {
                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 firstForLoop = 0
for i in 0...4 {
    firstForLoop += 1
}
print(firstForLoop)

使用..<创建的范围不包含上界,想要包含的话使用…

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值