Swift学习之路 -- 简单值和控制流
2015-11-25 10:26
405 查看
本文学习自《 The Swift Programming Language-swift2.0官方手册 中文版》的电子版
是记录自己的Swift学习历程、整理相关资料便于查看
学习Swift有一个很方便的工具
配置:
选择 New File
OK
常量只可以赋值一次 也就是说你可以用常量表示某个只需要赋值一次,但需要使用很多次的值
练习:创建一个显示类型为Float且初始值为4的常量
值永远不会被隐式的转换成其他类型,如果需要转换类型,请显式转换
把值转换成字符串更简单的方法:把值写到括号中,且在括号前加反斜杠
练习:使用()表示我的身高为175.5cm
创建一个空数组或者字典,使用初始化方法
使用[]和[:]来创建空数组和空字典 并用下标或key来访问元素
包裹条件和循环变量括号可以省略,但语句体的大括号是必须的
在if语句中,条件必须是一个BOOL表达式,不会隐形的与0做对比–这意味着像if score{…}这样的代码将会报错
你可以同时使用if和let来处理值缺失的情况
练习: 把optionalName改成nil,greeting会是什么?添加一个else语句,当optionalName是nil时给greeting赋一个不同的值
当变量的可选值是nil,条件会判断false,大括号的代码会被跳过。如果不是nil,会将值赋给let后面的常量,这样在代码块中就可以使用这个值了
switch支持任意类型的数据以及各种比较操作
let x where x.hasSuffix(“pepper”) 是说vegetable的值是不是以”pepper”做后缀(也就是结尾) 是就赋值给常量 x
switch执行到匹配的子句之后,程序会退出switch语句,所以不必每个子句结尾都写break
for in 遍历
先遍历字典取出每个数组 再遍历数组
使用while来重复运行一段代码直到条件不满足,循环条件也可以写在结尾,保证能至少循环一次
你可以在循环中使用..<来表示范围,也可以使用传统写法,二者等价
使用..<创建的范围不包含上界,想要包含的话使用…
是记录自己的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)
使用..<创建的范围不包含上界,想要包含的话使用…
相关文章推荐
- Apple Swift学习教程
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- Golang学习笔记(三):控制流
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符
- Swift中使用可选类型完美解决占位问题
- Swift学习笔记之构造器重载
- Swift中的Access Control权限控制介绍
- Swift类型创建之自定义一个类型详解
- Swift教程之控制流详解
- 秒学Swift开发语言