Swift基础类型

1、使用 let 来声明常量,使用 var 来声明变量。

注:你能够在一行中声明多个常量或者多个变量。用逗号隔开。

2、类型标注

假设初始值没有提供足够的信息(或者没有初始值),那你须要在变量后面声明类型,用冒号切割。

let variable: String

注意:一般来说你非常少须要写类型标注。

假设你在声明常量或者变量的时候赋了一个初始值,Swift能够判断出这个常量或者变量的类型。

3、输出函数println 和 print

println:是一个用来输出的全局函数,输出的内容会在最后换行。

print:唯一差别是在输出内容最后不会换行。

4、把值转换成字符串

有一种更简单的把值转换成字符串的方法:把值写到括号里,而且在括号之前写一个反斜杠。

let apples = 3

let oranges = 5

let appleSummary = "I have \(apples) apples."

let fruitSummary = "I have \(apples + oranges) pieces of fruit."

5、凝视

单行凝视://

多行凝视:/*  */

6、浮点数

Double:表示64位浮点数。

当你须要存储非常大或者非常高精度的浮点数时请使用此类型。

Float:表示32位浮点数。精度要求不高的话能够使用此类型。

7、类型别名

类型别名(type aliases)就是给现有类型定义还有一个名字。你能够使用 typealias keyword来定义类型别名。

比如:当你想要给现有类型起一个更有意义的名字时,类型别名很实用。如果你正在处理特定长度的外部资源的数据:

typealias AudioSample = UInt16

var minFound = AudioSample.min

var maxFound = AudioSample.max

8、创建元组 tuples

元组(tuples)把多个值组合成一个复合值。元组内的值能够使随意类型,并不要求是同样类型。

比如:let http404Error = (404, "Not Found")

9、元组内容的分解

能够将一个元组分解成单独的常量和变量使用。

let (statusCode, statusStr) = http404Error

假设你仅仅须要一部分元组值,分解的时候能够把要忽略的部分用下划线(_)标记。

let (justTheStatusCode, _) = http404Error

你还能够通过下标来訪问元组中的单个元素,下标从零開始。

var code = http404Error.0

var msg = http404Error.1

10、可选值 optionals 的强制解析

一个可选的 Int 被写作 Int?而不是 Int,它表示这个整形变量可能有值,或者可能为nil(沒值)。

你能够使用 if 语句来推断一个可选是否包括值。假设可选有值,结果是 true;假设没有值,结果是 false。

可选值的强制解析:当你知道可选确实包括值后,则能够在可选的名字后面加上一个感叹号(!)来获取值。

11、nil

这个表示没有值的意思。

假设你声明一个可选常量或者变量可是没有赋值,它们会自己主动被设置为 nil:

var surveyAnswer: String?

注意:nil 不能用于非可选的常量和变量。假设你的代码中有常量或者变量须要处理值缺失的情况,请把它们声明成相应的可选类型。

12、 隐式解析可选

有时候在程序架构中,第一次被赋值之后,能够确定一个可选总会有值。在这样的情况下,每次都要推断和解析可选值是很低效的,由于能够确定它总会有值。

这时我们就能够使用隐式解析可选。仅仅须要把后面的 ? 改成 ! 就可以。

13、隐式可选和可选的取值差别

let possibleString: String?

= "An optional string."

println(possibleString!) // 须要惊叹号来获取值

let assumedString: String! = "An implicitly unwrapped optional string."

println(assumedString) // 不须要感叹号

注意:假设一个变量之后可能变成 nil 的话请不要使用隐式解析可选。假设你须要在变量的 生命周期中推断是否是 nil 的话,请使用普通可选类型。

14、断言

有时候假设缺少某些条件。我们不想让代码继续运行下去,就能够使用断言(assertion)。

断言会推断一个逻辑条件是否为true,假设是true则执行下去。否则就中止执行。

使用assert函数来写断言。比如:

let age = -3

assert(age >= 0, "a person‘s age can not less than 0”)

由于age >= 0 为false, 则断言触发,中止执行。

15、何时使用断言

- 整数的附属脚本索引被传入一个自己定义附属脚本实现,可是下标索引值可能太小或者太大。

- 须要给函数传入一个值,可是非法的值可能导致函数不能正常运行。

- 一个可选值如今是nil,可是后面的代码执行须要一个非 nil 值。

注意:断言可能导致你的应用终止执行,所以你应当细致设计你的代码来让非法条件不会出现。然而,在你的应用公布之前,有时候非法条件可能出现,这时使用断言能够高速发现问题。

16、创建数组和字典

使用方括号[ ]来创建数组和字典,并使用下标或者键(key)来訪问元素。

var shoppingList = [" catfish", "water", " tulips", "blue paint"]

var occupations = [

"Malcolm": "Captain",

"Kaylee": "Mechanic",

]

17、创建空数组和字典

假设类型信息能够被判断出来,你能够用[]和[:]来创建空数组和空字典——就像你声明变量或者给函数传參数的时候一样。

18、负数求余

在对负数 -b 求余时, -b的符号会被忽略. 这意味着 a % b 和 a % -b的结果是同样的.

19、闭区间运算符

闭区间运算符 a...b 定义一个包括从 a 到 b (包括 a 和 b)的全部值的区间。

20、半闭区间运算符

半闭区间  a..<b 定义一个从  a 到  b 但不包含  b 的区间. 之所以称为半闭区间,  是由于该区间包含第一个值而不包含最后的值。

方便的使用于数组,比如:

let names = ["Anna", "Alex", "Brian", "Jack"]

let count = names.count

for i in 0..<count {

println("第 \(i + 1) 个人叫 \(names[i])")

}

21、字符串字面量

代码中包括一段提前定义的字符串值作为字符串字面量,它能够包括以下的特殊字符:

1.转义特殊字符 \0 (空字符)、\\(反斜线)、\t (水平制表符)、\n (换行符)、\r (回车符)、\" (双引號)、\‘ (单引號)。

2.单字节 Unicode 标量。写成 \xnn,当中  nn 为两位十六进制数。

3.双字节 Unicode 标量,写成 \unnnn,当中 nnnn 为四位十六进制数。

4.四字节 Unicode 标量,写成 \Unnnnnnnn,当中 nnnnnnnn 为八位十六进制数。

22、字符串空属性推断

var str = ""

str.isEmpty //true

23、 countElements 函数

通过调用全局 countElements 函数。并将字符串作为參数进行传递能够获取该字符串的字符数量。

var str = "andy is a good guy"

countElements (str)

24、字符串插值

插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号里。

let multiplier = 3

let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

25、字符串比較

Swift 提供了三种方式来比較字符串的值:字符串相等,前缀相等和后缀相等。

(1)字符串相等:即使用 == 来比較字符串

(2)前缀/后缀相等:通过调用字符串的 hasPrefix/hasSuffix 方法来检查字符串是否拥有特定前缀/后缀。它会返回一个Boolean值。

26、字符串大写和小写

您能够通过字符串的  uppercaseString 和 lowercaseString  属性来訪问一个字符串的大写/小写版本号。

27、数组的类型标注

Swift 数组应该遵循像Array<SomeType>这种形式。当中sometype是这个数组中唯一同意存在的数据类型。 我们也能够使用像SomeType[]这种简单语法(推荐)。

假设我们创建了一个String 值类型的数组,我们不能往当中插入不论什么不是String 类型的数据。 Swift 中的数组是类型安全的。而且它们中包括的类型必须明白。

var shoppingList: String[] = ["Eggs", "Milk"]

由于Swift有类型判断。 所以当我们拥有同样类型的数组值时,我们能够写成:var shoppingList = ["Eggs", "Milk"]

28、创建空数组

创建特定数据类型的空数组,比如创建Int类型的空数组。

var someInts = Int[]()

29、数组的属性和方法

(1)count属性:获得数组中数据的数量。

(2)isEmpty属性:检查数组是否存在值。

(3)append / += 方法:我们能够使用append方法或者 += 运算符在数组后面加入数据项。

比如:shoppingList.append("Flour") 或者 shoppingList += "Baking Powder" 或者 shoppingList += [ "Cheese", "Butter"]

(4)insert(atIndex:)方法:在某个详细索引值之前加入数据项。

比如:shoppingList.insert("Maple Syrup", atIndex: 0)

(5)removeAtIndex()方法:移除数组中的某一项。这种方法把数组在特定索引值中存储的数据项移除而且返回这个被移除的数据项。

比如:let mapleSyrup = shoppingList.removeAtIndex(0)

(6)removeLast()方法:移除数组中最后一项并返回其值。

30、利用下标改变一系列数据值

即使新数据和原有数据的数量是不一样的。

以下的样例把"Chocolate Spread"。"Cheese",和"Butter" 替换为"Bananas"和 "Apples":

shoppingList[4...6] = ["Bananas", "Apples"]

31、数组遍历

一般来说,for-in循环就可以,可是假设我们须要每一个数据项的值和索引,则须要使用全局 enumerate 函数来进行数组遍历,比如:

for (index, value) in enumerate(shoppingList) {

...

}

32、创建特定大小,数据默认的Array

// threeDoubles 是一种 Double[]数组, 等于 [0.0, 0.0, 0.0]

var threeDoubles = Double[](count: 3, repeatedValue:0.0)

由于我们Swift有类型判断的存在,所以在使用这样的构造方法的时候不须要指明数据类型,由于从value中我们就知道了数据的类型:

var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)

33、字典

字典是一种存储同样类型多重数据的存储器。每一个值(value)都关联独特的键(key)。键作为字典中的这个值数据的标识符。

注:在某个特定字典中能够存储的键和值必须预定义清楚。方法是通过显性类型标注或者类型判断。

Swift 的字典使用Dictionary<KeyType, ValueType>定义,当中KeyType是字典中键的数据类型。ValueType是字典中相应于这些键所存储值的数据类型。

比如:var airports: Dictionary<String, String> = ["TYO": "Tokyo", "DUB": "Dublin"]

和数组一样,假设我们使用字面语句构造字典就不用把类型定义清楚。

airports的也能够用这样的方法简短定义:

var airports = ["TYO": "Tokyo", "DUB": "Dublin"]

34、字典的方法和属性

基本和数组一样,都有类似的方法和属性,而且特别存在例如以下:

(1)updateValue(forKey:)方法:在这个键不存在相应值的时候设置值或者在存在时更新已存在的值,这种方法返回更新值之前的原值。这样方便我们检查更新是否成功。

(2)removeValueForKey(KeyName)方法:在键值对存在的情况下会移除该键值对而且返回被移除的value或者在没有值的情况下返回nil。

35、移除键值对

我们能够对某个键相应值赋予nil来移除这个键值对。

airports["APL"] = nil

36、字典遍历

使用for-in就可以:

for (airportCode, airportName) in airports {

...

}

37、字典的keys 或 values 属性

这些属性代表一个字典的全部key 或 value 的集合。

for airportCode in airports.keys {

...

}

for airportName in airports.values {

....

}

38、将键 或 值构造成一个新数组

let airportCodes = Array(airports.keys)

// airportCodes is ["TYO", "LHR"]

let airportNames = Array(airports.values)

// airportNames is ["Tokyo", "London Heathrow"]

39、创建一个空字典

var namesOfIntegers = Dictionary<Int, String>()

注:假设上下文中存在了空字典的字面语句,比如:namesOfIntegers[16] = "sixteen" ,则我们能够使用 namesOfIntegers = [:]  来定义一个Int, String类型的空字典。

时间: 2024-10-22 16:13:51

Swift基础类型的相关文章

Swift基础 -- Swift集合类型(数组和字典)

Swift提供了两种集合类型来存放多个值——数组(Array)和字典(Dictionary).数组把相同类型的值存放在一个有序链表里.字典把相同类型的值存放在一个无序集合里,这些值可以通过唯一标识符(也就是键)来引用和查找. 在Swift里,数组和字典里所能存放的值的类型是明确的.这意味着你不能误把一个错误类型的值添加到数组或字典里,也意味着你可以明白无误地知道从数组 或字典里取得的值会是什么类型的.Swift集合是类型明确的,这保证了你的代码会清楚地知道它们所能处理的值的类型,并让你能在代码开

从Pitre《Swift 基础教程2nd》开始

看了两天<Learn Objective-C on the MAC> 中文版本<Objective-C基础编程>,大概认真读到了第9章内存管理部分,感觉这语言可比C++简单多了. 第一天,因为有C语言基础的缘故,我在windows 上安装了GNUstep (Objective-C)开发环境,变看电子书籍,边在PC上编译运行树上的示例,几乎一个都没放过,还做了不少笔记. (毕竟作者 Mark Dalrymaple & Scott Knaster 是高屋建瓴,叙述技术娓娓道来,

3.Swift基础知识

Swift是用来开发iOS和OS X应用的新语言,但是许多地方用起来跟C或者OC是差不多的. Swift提供了C语言和OC的基本数据类型,比如整型用Int,浮点型用Double或者Float,布尔型用Bool,字符串文本用String,Swift还提供了两种集合类型,Array和Dictionary,后面会介绍. Swift也跟C一样用唯一的变量名来存储与使用数据,还能使用一些值不会变的变量,应该说是常量,比C里面的常量要强大.在涉及到一些值不会发生变化的数据时使用常量类型能让代码更安全整洁.

随手记Swift基础和Optional Type(问号?和感叹号!)

距离Apple推出Swift已经有几天了,网上也时不时出现"急招Swift程序员,要求有一天工作经验"的帖子. 看到Swift,除了苹果放的另外一门语言的链接(http://swift-lang.org/),还可能联想到Taylor Swift,或者铃木雨燕. 这几天网上关于Swift的话题和材料应该迅速膨胀,比如StackOverflow的相关标签,还有知乎上的一些相关讨论. 关于Swift的推出,我个人觉得对现有的使用Objective-C的iOS开发者不算是很大的冲击,毕竟写代码

Swift基础语法学习总结(一)

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法学习总结一

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法(常量变量、数据类型、元组、可选、断言等)

Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Array和Dictionary,请参考集合类型. 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值.在 Sw

Swift学习——Swift基础详解(四)

A:小儿编程很不好! B:多半是不爱学,从看英文版开始,让你爱上编程! Type Aliases    类型重定义(typedef) Swift中重定义类型的关键字是typealias,至于怎么用,应该不必多说了,看例子: typealias AudioSample = UInt16 //定义了一个类型名称AudioSample,代表UInt16类型 var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound is now 0 Boo

Swift学习——Swift基础详解(一)

注:由于基础部分在Swift Tour 中已经大体的说明了,所以在详解中不会达到100%的原文释义 Constants and Variables  常量和变量 常量和变量都需要声明名称和类型(作为程序员,这些基础也就不说了),常量一次赋值不能改变,变量的值可以改变 Declaring Constants and Variables   声明常量和变量 常量和变量在使用之前必须要声明,使用let关键字定义常量,var关键字定义变量 下面的例子可以用来定义用户登录的时候最大的尝试次数: let m