Swift基础语法学习


时间:2021-22-22

0 前言–Swift特点优势(忽悠点)

  1. Swift是支持多编程范式和编译式的开源编程语言,用于开发 iOS,OS X 和 watchOS 应用程序。Swift 是一种非常好的编写软件的方式,无论是手机,台式机,服务器,还是其他运行代码的设备。它是一种安全,快速和互动的编程语言。
  2. Swift 对于初学者来说很友好。它是第一个既满足工业标准又像脚本语言一样充满表现力和趣味的系统编程语言。它支持代码预览(playgrounds),可以允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果。
    3.Swift 将强大的类型推理和模式匹配与现代轻巧的语法结合起来,代码不仅更容易编写,而且易于阅读和维护。
  3. Swift 代码被编译和优化,以充分利用现代硬件。
  4. Swift 通过采用现代编程模式来避免大量常见编程错误:
  • 变量始终在使用前初始化。
  • 检查数组索引超出范围的错误。
  • 检查整数是否溢出。
  • 可选值确保明确处理 nil 值。
  • 内存被自动管理。
  • 错误处理允许从意外故障控制恢复

1 环境搭建

目的作用:Swift用于开发OS X和IOS应用程序。
搭建Swift开发环境,以便更好友好的使用各种开发工具和语言进行快速应用开发

1.1 Xcode安装

要是你的笔记本系统足够新,就直在APP Store上获取安装最新版本Xcode。但是像我是之前很久的Mac OS,无法满足安装最新Xcode,只能离线通过旧版本安装包来安装。
离线Xcode各个版本来对应下载:https://xcodereleases.com/ (不知道怎么用文字替换链接)

1.2 离线安装踩坑指南

  1. 踩坑1 下载Xcode 11.3.1 安装包
    是.XIP格式,但是一直显示已损坏,查看网上解决方法 1.是没有添加信任任何来源2.是没有让数字签名失效等; 但是最终结果还是不行。
  2. 就简单重新下载Xcode 10.3.XIP格式的,什么都没做直接双击发现可以安装。
    初步认为 可能是自己下载的版本自己的系统还是不太支持,因为那是我的Mac系统版本所能支持的最新的,降级一下发现是可以安装的。

2 Swift语言

  • 类型注解:var welcomeMessage: String 表明变量welcomeMessage:是字符串类型,但是基本上用不到这样,因为swift是强类型推理,可直接通过初始值赋值来推理出来。

  • 注释:和C语言相同,但多了嵌套多行注释,通过运用嵌套多行注释,可以快速方便注释掉一大段代码,即使这段代码之中已经含 有了多行注释块。

  • 每条语句后可不加分号,但若一行使用多条语句必须要加分号。

  • 强数据类型安全和类型推断。

  • 类型别名:就是给现有类型定义另一个名字,使用 typealias 关键字来定义类型别名。

typealias AudioSample = UInt16

2.1 基本数据类型

2.1.1 申明常量和变量

常量和变量必须在使用前声明,用 let 来声明常量,用 var 来声明变量。

// 驼峰命名法
let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
var x = 0.0, y = 0.0, z = 0.0  // 一次性声明多个 

2.1.2 整数类型

8位无符号整数类型是 UInt8,32位有符号整数类型是 Int3。

2.1.3 浮点数

浮点类型比整数类型表示的范围更大,可以存储比 Int 类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:

  • Double 表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
  • Float 表示32位浮点数。精度要求不高的话可以使用此类型。

2.1.4 布尔值

true 和 false;

2.1.5 元组

*元组(tuples)*把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。

let http404Error = (404, "Not Found")
// http404Error 的类型是 (Int, String),值是 (404, "Not Found")

(404, “Not Found”) 元组把一个 Int 值和一个 String 值组合起来表示 HTTP 状态码的两个部分.

// 用法直接看用法

// 定义元组
let http404Error = (404, "Not Found")	// http404Error 的类型是 (Int, String),值是 (404, "Not Found")

// 元组分解,对应相等
let (statusCode, statusMessage) = http404Error  
print("The status code is \(statusCode)")  	// 输出“The status code is 404”
print("The status message is \(statusMessage)")	// 输出“The status message is Not Found”

// let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")  // 输出“The status code is 404”

// 通过下标来访问元组中的单个元素
print("The status code is \(http404Error.0)")	// 输出“The status code is 404”
print("The status message is \(http404Error.1)")	// 输出“The status message is Not Found”


// 定义元组的时候给单个元组命名,通过名字来获取这些元素的值:
print("The status code is \(http200Status.statusCode)")		// 输出“The status code is 200”
print("The status message is \(http200Status.description)")	// 输出“The status message is OK”

2.1.6 可选类型

  • 可选类型表示两种可能:或者有值 或者没值;可以给可选变量赋值为 nil 来表示它没有值;
  • if语句以及强制解析:可以使用 if 语句和 nil 比较来判断一个可选值是否包含值。
  • 可选绑定:使用*可选绑定(optional binding)*来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。
    可选绑定可以用在 if 和 while 语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。

2.1.7 错误处理

使用 错误处理(error handling) 来应对程序执行中可能会遇到的错误条件。

3 断言和先决条件

3.1 断言和先决条件 调试代码的好处

  • 断言和先决条件是在运行时所做的检查。用断言和先决条件来表达你所做的假设和你在编码时候的期望,果断言或者先决条件中的布尔条件评估的结果为 true(真),则代码像往常一样继续执行。如果布尔条件评估结果为 false(假),程序的当前状态是无效的,则代码执行结束,应用程序中止。
  • 断言帮助你在开发阶段找到错误和不正确的假设,先决条件帮助你在生产环境中探测到存在的问题。
  • 断言和先决条件的不同点是,他们什么时候进行状态检测:断言仅在调试环境运行,而先决条件则在调试环境和生产环境中运行。在生产环境中,断言的条件将不会进行评估。这个意味着你可以使用很多断言在你的开发阶段,但是这些断言在生产环境中不会产生任何影响。

3.2 使用断言进行调试

可以调用 Swift 标准库的 assert(::file:line:) 函数来写一个断言。


let age = -3
// 当表达式的结果为 false 的时候这条信息会被显示
assert(age >= 0, "A person's age cannot be less than zero")		// 因为 age < 0,所以断言会触发

3.3 强制执行先决条件

当一个条件可能为假,但是继续执行代码要求条件必须为真的时候,需要使用先决条件。Eg:使用先决条件来检查是否下标越界,或者来检查是否将一个正确的参数传给函数。

可以使用全局 precondition(::file:line:) 函数来写一个先决条件。向这个函数传入一个结果为 true 或者 false 的表达式以及一条信息,当表达式的结果为 false 的时候这条信息会被显示:

3.4 基本运算符

运算符是检查、改变、合并值的特殊符号或短语。这章会包含 Swift 中的高级运算符,及如何自定义运算符,及如何进行自定义类型的运算符重载。

  • 赋值运算符:
  • 算术运算符:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值