Swift教程_零基础学习Swift完整实例(二)_swift基础(简单值、控制流、方法和闭包)
来源:互联网 发布:ipad下载旧版本软件 编辑:程序博客网 时间:2024/04/27 23:44
三、Swift基础介绍
本章将对Swift做一个简单说明,内容取自《The Swift Programming Language》,并加之自己的理解。
首先swift全局作用域中的代码会被自动当做程序的入口点,所以你也不需要main方法
。你同样不需要在每个语句结尾写上分号。而且提供了playground可以在编辑代码实时看到效果,可以在xcode中new一个playground然后体验一下。如图。
以下代码的运行都可以通过playground快捷显示,这个功能对于学习来说还是非常好的。
1.简单值(Simple Values)
let
声明常量:你只需要决定一次,但是需要使用很多次。var
声明变量let implicitInteger = 70var implicitDouble = 70.0let explicitDouble: Double = 70
2.值不会被隐式转换为其他类型,只能显式转换。如下:
let label = "The width is"let width = 94let widthLabel = label + String(width)
3.还可以使用\()进行转换,如下:
let apples = 3let oranges = 5let fruitSummary = "I have \(apples + oranges) pieces of fruit."
4.和java类似,使用方括号[][:]来创建数组和字典,如下:
var shoppingList = ["catfish", "water", "tulips", "blue paint"]shoppingList[1] = "bottle of water"//[catfish, bottle of water, tulips, blue paint]var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic",]occupations["Jayne"] = "Public Relations" //[Kaylee: Mechanic, Malcolm: Captain, Jayne: Public Relations]let emptyArray = [String]()//老版本为<span style="font-family: Arial, Helvetica, sans-serif;">String[]</span>let emptyDictionary = Dictionary<String, Float>() //空数组和空字典初始化shoppingList = [] //如果类型信息可以被推断出来,可以直接创建空数组和空字典
2.控制流(Control Flow)
使用if else
和switch case
来进行条件操作,使用for-in
、for
、while
和do-while
来进行循环。
1.包裹条件和循环变量的小括号可以省略,语句体的大括号是必须的。
2.在if
语句中,条件必须是一个Bool表达式,不会隐形地与0做对比,if score { ... }不会通过编译。
3.在变量的类型后面加一个?来标记这个变量的值是可选的,可选值是一个具体的值或者是nil(
表示值缺失)。
var optionalName: String? = "John Appleseed"//可选值var greeting = "Hello!"if let name = optionalName {//optionalName 为nil时,if的条件会返回false,不会执行大括号中的代码 greeting = "Hello, \(name)"}
4.switch
支持任意类型的数据以及各种比较操作,不仅仅是整数以及测试相等。成功运行case
后,程序会退出switch
语句,不需要在每个子句结尾写break
。
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."}5.你可以使用
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 = 0for (kind, numbers) in interestingNumbers { for number in numbers { if number > largest { largest = number } }}6.你可以在循环中使用
..
来表示范围(使用..<
不包含上界,...包含上界
)var loop = 0for i in 0..<3 {//相当于for var i = 0; i < 3; ++i,老版本为.. loop += i}for i in 0...3{//相当于for var i = 0; i <= 3; ++i loop += 1}
3.方法和闭包(Functions and Closures)
1.使用func
来声明一个方法,使用名字和参数来调用方法(使用...作为可变参数,用一个数组来获取它们)。使用->
来指定方法返回值(可返回多个值)。
func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)."}greet("Bob", "Tuesday")func getGasPrices() -> (Double, Double, Double) { return (3.59, 3.69, 3.79)}getGasPrices()func sumOf(numbers: Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum}sumOf()//0sumOf(42, 597, 12)//651
2.方法可以嵌套。被嵌套的方法可以访问外部方法的变量,你可以使用嵌套方法来重构一个太长或者太复杂的方法。
func returnFifteen() -> Int { var y = 10 func add() { y += 5 } add() return y}returnFifteen()//15
3.方法可以作为另一个方法的参数和返回值。
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne}var increment = makeIncrementer()increment(7)//8func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool { for item in list { if condition(item) { return true } } return false}func lessThanTen(number: Int) -> Bool { return number < 10}var numbers = [20, 19, 7, 12]hasAnyMatches(numbers, lessThanTen)//true
4.方法实际上是一种特殊的闭包,你可以使用{}
来创建一个匿名闭包。使用in
来分割闭包的描述以及代码段。
numbers.map({ (number: Int) -> Int in let result = 3 * number return result})
点击进入ooppookid的博客
- Swift教程_零基础学习Swift完整实例(二)_swift基础(简单值、控制流、方法和闭包)
- Swift教程_零基础学习Swift完整实例(六)_swift完整实例(构建控制层)
- Swift教程_零基础学习Swift完整实例(一)_swift实例简介
- Swift教程_零基础学习Swift完整实例(四)_swift完整实例(搭建程序结构、构建storyboard)
- Swift教程_零基础学习Swift完整实例(五)_swift完整实例(构建数据层)
- Swift教程_零基础学习Swift完整实例(七)_swift完整实例(构建展示层)
- Swift教程_零基础学习Swift完整实例(三)_swift基础(对象和类、枚举和结构、协议和扩展、泛型)
- Swift教程_零基础学习Swift完整实例(八)_swift完整实例(添加View的动画效果、添加View的阴影)
- Swift教程_零基础学习Swift完整实例(九)_总结
- 零基础从头学习Swift(二):Swift中的变量和常量
- 零基础学习swift
- 零基础学习swift
- 零基础从头学习Swift(一):Swift环境搭建
- Swift 基础学习(实例方法)
- Swift 基础学习(实例方法)
- swift开发环境搭建[零基础学习Swift开发](二)
- swift语言基础(二)流程控制
- swift基础语法--简单值 控制流
- javaScript变量作用域
- jetty下载与使用
- 根据下拉框的内容异步加载表格
- poj2386 Lake Counting
- 转载和积累系列 - PHP程序员的技术成长规划
- Swift教程_零基础学习Swift完整实例(二)_swift基础(简单值、控制流、方法和闭包)
- 启动关闭oracle服务.bat
- 系统、模型和仿真
- 如何在cocos2d-x中使用ECS(实体-组件-系统)架构方法开发一个游戏?
- 秋天来了
- 黑马程序员-----java中构造代码块
- 关于新金瓶梅高清完整版在线播放地址下载http://item.taobao.com/item.htm?_u=k33n3m0597d&id=41415650611
- 还原数据库出现“未获得排他访问”解决方法(杀死数据库连接的存储过程sqlserver)
- 【阅读】《乔布斯的魔力演讲》