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类型的空字典。

Swift基础类型的更多相关文章

  1. swift基础:第二部分:函数和闭包

    今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于 ...

  2. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  3. swift基础语法(四) 函数、闭包(Closures)

    //函数基本定义 func 函数名(参数名:参数类型=默认值) ->返回值类型{代码块} //无参无返回值函数 func hsmin(){ } //单参无返回值函数 func prin(st:S ...

  4. 浅谈Swift集合类型

    Swift 的集合表现形式由数组和字典组成.它可以完美的存储任何呢想存储的东西. 数组是一个同类型的序列化列表集合,它用来存储相同类型的不同值.字典也是一个数组,但它的存值方式类似于Map,通过一对一 ...

  5. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  6. Swift基础语法学习总结一

    1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. ...

  7. 3.Swift翻译教程系列——Swift基础知识

    英语PDF下载链接http://download.csdn.net/detail/tsingheng/7480427 Swift是用来开发iOS和OS X应用的新语言,可是很多地方用起来跟C或者OC是 ...

  8. swift -- 基础

    swift -- 基础 1.常量和变量 常量: let 变量: var 2.声明常量和变量 常量的声明: let let  a = 1         //末尾可以不加分号,等号两边的空格必须对应(同 ...

  9. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

随机推荐

  1. 服务器Java环境配置

    /* 当要在服务器里搭建Java web项目时, 要先配置好Java需要的环境 */ //jdk [root@localhost ~]# cd /usr/local/src [root@localho ...

  2. PlantUML——2.中文乱码及解决

    关于中文 参见: http://plantuml.sourceforge.net/unicode.html   问题描述 第一步:创建demo03.txt描述文档: @startuml Alice - ...

  3. fatal error LNK1104: 无法打开文件“libc.lib”的问题

    如果将用低版本的VC开发的项目,拿到高版本的VC开发环境上去编译,链接时也许会触发LNK1104错误.解决方案是链接时忽略此库,在此提供三种解决方案: 1.解决如下:项目->属性中->配置 ...

  4. C++构造函数详解(复制构造函数)

    构造函数是干什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员. 构造函数的种类 class Compl ...

  5. 抽象工厂模式(Abstract Factory)C#实例

    抽象工厂模式(Abstract Factory)C#实例 本文出处http://www.dofactory.com/net/abstract-factory-design-pattern 一.场景描述 ...

  6. electron写俄罗斯方块游戏(Tetris)

    背景 在折腾ES6,突然想起大学时用c语言写过俄罗斯方块,本项目中主要是利用ES6的Class特性进行面向对象编程.项目采用node.js v6.2.0 + electron v1.1.0 进行桌面开 ...

  7. 【LOJ】#2007. 「SCOI2015」国旗计划

    题解 考虑朴素的做法,断环为链,复制2M个,找到一个位置i,f(i)是这个位置之前开始的线段,结束位置最远的位置在哪 然后对于每一个人,从自己线段的起点往下跳,跳到起点+M或以后的步数就是答案 我们发 ...

  8. live555例子程序编译连接时发现函数未定义问题

    1 调整连接库的顺序. 2 更新头文件与所用的库一致

  9. Java经典设计模式之十一种行为型模式

    转载: Java经典设计模式之十一种行为型模式 Java经典设计模式共有21中,分为三大类:创建型模式(5种).结构型模式(7种)和行为型模式(11种). 本文主要讲行为型模式,创建型模式和结构型模式 ...

  10. Ubuntu编译安装nginx,php,mysql

    摘要: 整理的Ubuntu编译安装nginx,php,mysql的步骤,主要来自对驻云的sh-1.4.1中脚本的整理,随时代进步,内容中的软件或者命令请自行更新 目录准备 创建用户 userdel w ...