Swift学习笔记(1):基础部分
目录:
- 分号
- 常量和变量
- 数据类型
- 数值型类型转换
- 类型别名
- 元组
- 可选类型
- API版本检查
分号
Swift并不强制要求你在每条语句的结尾处使用分号( ; ),你也可以按照自己的习惯添加分号。如果在一行内写多条独立的语句情况下必须要用分号。
常量和变量
使用let定义常量,使用var定义变量,常量和变量必须在使用前声明,且可以使用Unicode字符声明:不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
let maximumNumberOfLoginAttempts =
var currentLoginAttempt = 0
let constWelcomeMessage: String // 类型标注
var varWelcomeMessage: String // 类型标注
let 你好 = "你好世界" // Unicode字符声明常量
let ?? = "dogcow" // Unicode字符声明常量
你可以在一行中声明多个常量或者多个变量,用逗号隔开:
var x = 0.0, y = 0.0, z = 0.0
var red, green, blue: Double // 类型标注
数据类型
Swift包含基础数据类型:
Int, Int8, Int16, Int32, Int64, UInt, UInt8, UInt16, UInt32, UInt64 : 整型值
Float : 表示32位浮点数
Double : 表示64位浮点数, 当执行类型推断而推断浮点数的类型时,Swift总是会选择Double而不是Float
Bool : 布尔型值
String : 文本型值
Character : 字符型值
Swift提供集合数据类型:
Array : 数组类型
Set : 集合类型
Dictionary : 字典类型
Swift中所有的基本类型:整数、浮点数、布尔值、字符串、数组和字典,都是值类型,并且在底层都是以结构体的形式所实现。
数值型类型转换
Int8和Int16是不同的两种类型,在转换时必须使用类型强制转换
// 整数类型转换
let twoThousand: UInt16 =
let one: UInt8 =
let twoThousandAndOne = twoThousand + UInt16(one)
// 整数和浮点数间转换
let three =
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine // 加号两边的数类型须相同
类型别名
可以使用 typealias 关键字来定义类型别名
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound = 0
元组
把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型
let http404Error = (, "Not Found") // http404Error 的类型是 (Int, String)
let http200Status = (statusCode: , description: "OK") // 定义元组元素
let (statusCode, statusMessage) = http404Error // 分解元组获取元素值
let (justTheStatusCode, _) = http404Error // 忽略缺省值
可选类型
可以使用?定义可选类型变量或常量
var surveyAnswer: String? // surveyAnswer 被自动设置为 nil
var serverResponseCode: Int? =
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要感叹号来获取值
如果一个可选类型变量或常量第一次被赋值之后,能够确定总会有值时,可以使用!定义隐式解析可选类型的变量或常量
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // 不需要感叹号
API版本检查
if #available(iOS , macOS 10.12, *) {
// 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
// 使用先前版本的 iOS 和 macOS 的 API
}
声明:该系列内容均来自网络或电子书籍,只做学习总结!
Swift学习笔记(1):基础部分的更多相关文章
- swift学习笔记1——基础部分
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- MAVEN学习笔记之基础(1)
MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...
随机推荐
- Windows下ElasticSearch及相关插件的安装
(1)在官网下载ElasticSearch压缩包.这里我下载的是elasticsearch-1.7.1(下载地址:https://download.elastic.co/elasticsearch/e ...
- cocos2d-x-lua基础系列教程一(hello lua)
myscene.lua function ERROR_TRACBACK(msg) print (==========) print ("lua error is "..tostri ...
- 研读:AirBag Boosting Smartphone Resistance to Malware Infection
- [JZOJ NOIP2018模拟10.20 B组]
T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...
- Django(part2)
admin site:django自带了admin site,我们需要创建能访问site的用户 #以交互的方式创建超级用户 manage.py createsuperuser 如果要把model加到a ...
- 编程语言与Python学习(一)
1.1 编程与编程语言 1.1.1 编程语言 计算机的发明,是为了用机器解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑一样自动执行 ...
- 内部div自动扩张剩余宽度
<div id="container"> <div id="left">左边</div> <div id=" ...
- luogu P1405 苦恼的小明(欧拉定理)
题意 求a1^a2^a3^...^an(mod10007)n<=1000000,a[i]<=10000 题解 明眼人一眼就可以看出是欧拉定理的推论. 首先这个题是错的,没说保证互质. 然而 ...
- 实验二实验结论&实验总结与体会
Part1:格式化输出函数printf()和格式化输入函数scanf() ① /* <C语言程序设计教程学习指导>p118 实验内容(1) 这是一个常用格式控制符使用示例 运行程序,结合运 ...
- solr + eclipse 调试环境搭建
1: 在官网下载对应源码 http://www.fayea.com/apache-mirror/lucene/solr/4.1.0/ 选择源码文件,如图所示: 2: 解压后目录如图所示: 在根目录下存 ...