Swift(二)基础部分
数据类型
Swift 包含了 C 和 Objective-C 上所有基础数据类型。它还增加了 Objective-C 中没有的高阶数据类型比如元组(Tuple)
1、基础类型
Int
整形和UInt
无符号整形Float
和Double
浮点型Bool
布尔型Character
字符型String
字符串类型
2、集合类型
Array
数组Set
集合Dictionary
字典
3、高阶类型
Tuple
元组
声明常量和变量
常量和变量必须在使用前进行声明,Swift中使用 let 声明常量,使用 var 声明变量
类型标注
当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
类型安全和类型推断
Swift 是一个类型安全(type safe)的语言。类型安全的语言可以很清楚地知道代码要处理的值的类型。
由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发阶段就会发现并修复错误。当你要处理不同类型的值时,类型检查可以帮你避免错误。
然而,在声明常量和变量的时候如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。有了类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。原理很简单,只要检查你赋的值即可。
因为有类型推断,和 C 或者 Objective-C 比起来 Swift 很少需要声明类型。常量和变量虽然需要明确类型,但是大部分工作并不需要你自己来完成。
整数
整数可以是有符号
(正、负、零)或者 无符号
(正、零)。Swift 提供了8,16,32和64位的有符号和无符号整数类型。可以访问不同整数类型的 min
和 max
属性来获取对应类型的最小值和最大值。一般来说,你不需要专门指定整数的长度。但是Swift 提供了特殊的整数类型Int和无符号整型UInt,它们的长度和当前平台的原生字长相同。
注意:尽量不要使用UInt
,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int
,即使你要存储的值已知是非负的。统一使用Int
可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断
浮点数
浮点数是有小数部分的数字,浮点类型比整数类型表示的范围更大,可以存储比 Int
类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:
Double
表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。Float
表示32位浮点数。精度要求不高的话可以使用此类型。
注意:Double
精确度很高,至少有15位数字,而Float
只有6位数字。根据代码需要处理的值的范围来选择使用哪个类型,在两种类型都匹配的情况下,将优先选择 Double
。
布尔值
Swift 有一个基本的布尔(Boolean)类型,叫做Bool
。布尔值指逻辑上的值,因为它们只能是真或者假。
Swift 有两个布尔常量,true
和 false
:
// 布尔值
let trueResult = true
let falseResult = false
元组
元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。
可选类型
在Swift中,可选类型是为了表达当一个变量值为空的情况。当一个值为空时,它就是nil。Swift中无论是值类型或者引用类型的变量,都可以是可选类型。
可选绑定
使用 可选绑定 来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在 if
和 while
语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。
隐式解析可选类型
如上所述,可选类型表明了常量或者变量可以“没有值”。可以通过if语句来判断是否有值,如果有值的话可以通过可选绑定来解析值。但是在项目中,当一个可选类型被第一次赋值后,可选类型肯定有值,那这个时候如果每次判断和解析值就会很低效。
如此,我们可以将用作可选的类型的后面的问号 ? 改为感叹号 ! 来声明一个隐式解析可选类型。
Swift(二)基础部分的更多相关文章
- Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
- [Swift]基础
[Swift]基础 一, 常用变量 var str = "Hello, playground" //变量 let str1="Hello xmj112288" ...
- Swift之基础知识
Swift之基础知识 出于对Swift3.0的学习,写下这篇基本语法的笔记.希望能帮助记忆 -0- 这边提供Swift3.0中文教材,资源链接: https://pan.baidu.com/s/1c2 ...
- Swift语法基础入门三(函数, 闭包)
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...
- Swift语法基础入门四(构造函数, 懒加载)
Swift语法基础入门四(构造函数, 懒加载) 存储属性 具备存储功能, 和OC中普通属性一样 // Swfit要求我们在创建对象时必须给所有的属性初始化 // 如果没办法保证在构造方法中初始化属性, ...
- 「kuangbin带你飞」专题十二 基础DP
layout: post title: 「kuangbin带你飞」专题十二 基础DP author: "luowentaoaa" catalog: true tags: mathj ...
- swift编程语言基础教程 中文版
swift编程语言基础教程 中文版 http://download.csdn.net/detail/u014036026/7845491
- Swift中文基础教程----下标
类,结构和枚举类型都可以通过定义下标来访问一组或者一个序列中的成员元素.通过下标索引就可以方便地检索和设置相应的值,而不需要其他的额外操作.比如你可以通过someArray[index]来访问数组中的 ...
- Swift 二维码扫描 简单实现
3.30看视频 学到了二维码简单的实现 还有一些动画的实现 今天就先记录一下二维码扫描的简单实现 不太好记手写一遍 学习的基础在于模仿嘛 创建一个实现二维码扫描的步骤 1.首先是懒加载创建 会话 ...
随机推荐
- 【原】vue-router中params和query的区别
1.引入方式不同 query要用path来引入 this.$router.push({ path: 'test', query: { type: 2, detail: '哈哈' } }) params ...
- javascript的变量声明和数据类型
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- PHP中获取当前页面的完整URL、PHP URL处理、获取不带扩展名的文件名
javascript实现: top.location.href 顶级窗口的地址this.location.href 当前窗口的地址 PHP实现 #测试网址: http://localhost/blog ...
- Oracle安装过程中Oracle Database Configuration Assistant失败问题解决
今天在安装Oracle的过程中出现了oracle Database Configuration Assistant问题,我解决该问题的方法是将我的计算机用户名更改了一下,改成了pc1.之后再在orac ...
- CMD(命令提示符)-------javac编译程序出现“”编码GBK的不可映射字符“”
问题描述:使用命令提示符(CMD)编译写好的java程序的时候出现“编码GBK的不可映射字符” 问题截图: 问题分析:看提示就知道是代码的注释出现问题,但注释格式完全正确,那么问题就只可能是注释编码出 ...
- 【Linux】【二】linux 压缩文件(txt)、查看压缩文件内容、解压缩文件、
通过Xshell 压缩文件.解压缩文件 gzip tools.txt 压缩[tools.txt]文件 zcat tools.txt.gz 查看压缩文件[tools.txt.gz]内容 gunzip ...
- sql(存储过程,事务,索引,游标,触发器)
1.SqlServer中like '%_%'来匹配下划线: --在sql server的like中下划线类似于通配符%,所以无法使用like '%_%'来匹配下划线 select * from cla ...
- java:easyui(重点示例)
1.accordion(可折叠的): <!doctype html> <html lang="zh"> <head> <title> ...
- 【一个开发设想】开发一个游戏向时间管理APP
什么是游戏向时间管理呢? 首先我们要做的是时间管理.为了更好地利用时间,摆脱拖延症. 其次是游戏向.就是利用主线任务.支线任务.每日任务的方式展现,一般来讲,没人会讨厌玩游戏.更何况玩这个“游戏”是为 ...
- 调用百度api的原理流程
1.为了实现酒店地址的定位 2.使用可视化便捷的百度地图API生成器:设置公司的地址和地图等级 3.设置地图的滚轮.缩放功能 4.获取代码,拷贝到html页面中 5.申请秘钥,在html中引用地图AP ...