swift 类型.
swift 类型
变量声明
用let来声明常量,用var来声明变量
可以在一行中声明多个常量或者多个变量,用逗号隔开
var x = 0.0, y = 0.0, z = 0.0
类型安全
Swift 是一个类型安全(type safe)的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。
一个变量是什么类型,通过两种方式来表达:
- 类型标注
- 类型标注表示这个变量可以存储某种类型的值,声明中的冒号代表着“是...类型”:
var welcomeMessage: String - 类型推断
- 如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。有了类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。原理很简单,只要检查你赋的值即可。
注意:当推断浮点数的类型时,Swift 总是会选择Double而不是Float。一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型
变量命名
- 当你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型
- 如果你需要使用与Swift保留关键字相同的名称作为常量或者变量名,你可以使用反引号(`)将关键字包围的方式将其作为名字使用。
- 常量的值一旦被确定就不能更改了。尝试这样做会导致编译时报错
打印变量和常量
println是一个用来输出的全局函数,输出的内容会在最后换行。
xcode的playground使用println,点击工具条的show the Assistant editor.即能显示输出
var str = "Hello, playground"
println(str)
类型转换
SomeType(ofInitialValue)是调用 Swift 构造器并传入一个初始值的默认方法。
注意,你并不能传入任意类型的值,只能传入SomeType内部有对应构造器的值。
不过你可以扩展现有的类型来让它可以接收其他类型的值(包括自定义类型)
不同整数类型的变量和常量可以存储不同范围的数字,如果数字超出了常量或者变量可存储的范围,编译的时候会报错:
let cannotBeNegative: UInt8 = -1
// UInt8 类型不能存储负数,所以会报错
let tooBig: Int8 = Int8.max + 1
// Int8 类型不能存储超过最大值的数,所以会报错 let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
//在语言内部,UInt16有一个构造器,可以接受一个UInt8类型的值,所以这个构造器可以用现有的UInt8来创建一个新的UInt16
let twoThousandAndOne = twoThousand + UInt16(one)
类型别名
类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用typealias关键字来定义类型别名。
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound 现在是 0
断言
可以使用断言来保证在运行其他代码之前,某些重要的条件已经被满足。
如果条件判断为true,代码运行会继续进行;如果条件判断为false,代码运行停止,你的应用被终止。
let age = -3
assert(age >= 0, "A person's age cannot be less than zero")
// 因为 age < 0,所以断言会触发,代码运行停止,应用被终止
可以做调试使用
整型 Int
Swift 提供了8,16,32和64位的有符号和无符号整数类型。
Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:
- 在32位平台上,Int和Int32长度相同。
- 在64位平台上,Int和Int64长度相同。
Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:
- 在32位平台上,UInt和UInt32长度相同。
- 在64位平台上,UInt和UInt64长度相同。
尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。
除了这种情况,最好使用Int,即使你要存储的值已知是非负的。
统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断
浮点型 Double和Float
- Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
- Float表示32位浮点数。精度要求不高的话可以使用此类型。
布尔型 Bool
Swift 有两个布尔常量,true和false:
let orangesAreOrange = true
let turnipsAreDelicious = false
字符窜 String 和 Character(字符)
Swift 的String类型表示特定序列的Character(字符)类型值的集合,不能用下标取
for character in "Dog!swift 类型.的更多相关文章
- Swift类型检查与转换
继承会发生在子类和父类中,如图所示,是一系列类的继承关系类图,Person是类层次结构中的根类,Student是Person的直接子类,Worker是Person的直接子类.这个继承关系类图的具体实现 ...
- Swift—类型检查与转换-备
继承会发生在子类和父类之间,是一系列类的继承关系. 例如:Person是类层次结构中的根类,Student是Person的直接子类,Worker是Person的直接子类. 这个继承关系类的具体实现代码 ...
- Swift - 类型判断is 与 类型转换as
在Swift中,通常使用is和as操作符来实现类型检查和转换.下面通过样例来演示使用方法,首先定义几个类. 1 2 3 4 5 6 7 8 9 10 11 //基类,人类 class Human{ } ...
- Swift类型推测在可选调用中的小提示
我们知道Swift中协议里也有对应于Objc中的可选方法或计算属性,当然协议必须以@objc伪指令修饰否则不可以哦. 如下示例: @objc protocol Transaction{ fun com ...
- Swift 类型桥接
前言 iOS 中的 API 基本都是在许多年前由 OC 写成的,现在通过桥接的方法在 Swift 中可以用,基本看不出区别,非常自然.但是一些特殊的类型,在两种语言进行桥接的时候需要特别注意. 1.N ...
- Swift 类型嵌套
1.类型嵌套 Swift 支持类型嵌套,把需要嵌套的类型的定义写在被嵌套的类型的 {} 中. Swift 中的枚举类型可以辅助实现特定的类或者结构体的功能. struct SchoolUniform ...
- swift类型擦除的定义-swift的类型擦除只是一个类型高低阶转换的游戏。
所谓swift的类型擦除是指: moand转换: 通过技术手段(通常是包装器),将具体类型的类型信息擦除掉了,只将类型的(某一个侧面的)抽象信息(通常指的是类型尊从的协议.接口.或基类)暴露出来. A ...
- Swift 类型检查与类型转换
前言 在 Swift 语言中一般使用 is 关键字实现类型检查,使用 as 关键字实现类型转换,除此之外还可以通过构造器和方法来实现类型转换. 1.类型检查 1.1 使用 is 检查 类型检查操作符 ...
- Swift 类型别名
类型别名 在 Swift 语言中使用 typealias 关键字定义类型别名. typealias ShortInteger = Int8
随机推荐
- Python学习(四)数据结构 —— list tuple range
序列类型 list tuple range list 和 tuple list: 列表,由 [] 标识: 有序:可改变列表元素 tuple: 元组,由 () 标识: 有序:不可改变元组元素(和 ...
- mongodb聚合管道用法
基本用法 db.collection.aggregate( [ { <stage> }, ... ] ) stage如下 名称 描述 $addFields 将新的字段添加到文档中,输出的文 ...
- c#如何操作ppt的播放 【转】
C#控制ppt的代码 包括打开ppt文件.读取幻灯页,插入幻灯片,自动播放等 using System.Collections.Generic; using System.Linq; using Sy ...
- mysql的安全性机制
MySQL中主要包括两种用户:root用户和普通用户,其中前者为超级管理员,拥有MySQL提供的一切权限:而普通用户则只能拥有创建用户时赋予它的权限. MySQL的安全性机制主要包括权限机制,用户机制 ...
- 解决Asp输出乱码问题
在一个Asp页面中页面正常的中文字符都没有问题,但如果用Asp程序输出的话就显示为乱码 终于在百度经验上找到解决方案: 1.将文件编码更改为Utf-8 2.在页头添加"<%@LANGU ...
- springMVC之增删改查
一.核心原理 1. 用于发送请求给server: /home.htm 2. 请求被DispatchServlet拦截到 3. DispatchServlet通过HandleMapping检查url有没 ...
- Linux Samba安装与使用
一 安装环境: 虚拟机:RedHat 5.4 192.168.75.128 主机环境:WIN7 32bit 192.168.75.1 网络连接方式:NAT 二 安装步骤: 说明: Ø samb ...
- vue + 百度地图api
主要分解为如下步骤: (1)在html文件中引入百度地图, <script type="text/javascript" src="http://api.map.b ...
- WebApi2 知识点总结
1.建议使用异步接口async Task<> public async Task<IHttpActionResult> Get() 如果返回的是IEnumerable请使用: ...
- 【Oracle】Oracle常用语句集合
表相关 1.快速统计大表记录数 select table_name, t.num_rows, t.last_analyzed from tabs t WHERE table_name='TABLE_ ...