1.变量、常量
如很多语言一样,变量可以改变他的值(可多次修改),常量只能有一次定义(不可修改)
swfit通过var来定义变量(variable),通过let定义常量
并且swfit有一个很好用的地方(对于自己写多了java来说,感觉有点奇怪的用法)。他可以不明确声明类型,赋值时编译器会自动类型推断,意思我们如果一开始就对变量赋值,就可以不声明变量的类型了,例如:
var myVariable = 2.0
let myConstant = "这是一个字符串常量"
即使我们没有对两个量定义类型,他也可以自动判断类型,但是,如果我们最初没有对其进行赋值,肯定是需要设置类型的,Swfit也没有高级到那种程度,定义常、变量方法如下:
var myVariable: Double
let myConstant: String
在上面我们没有对常量赋值
数据类型跟其他语言一样,在这就不多赘述了。
一个值不能隐式转换为其他类型,如果把一个值转换成其他类型,需要显式转换。例如:
var num = 15
var str = "this num is "
//str += num 是错误的
str += String(num)
print(str)
可以使用字符串插值符号 \() ,字符串插值是一种全新的构建字符串的方式,可以在其中包含常量、变量、字面量和表达式 ,例如:
let apple = 3
let oranges = 4
let str = "I have \(apple + oranges) fruit."
let str1 = "I have \(2.0 + Double(3)) fruit."
2.数组
与其他语言一样,数组也是差不多的,当然,根据Swfit自动判断变量的方法,我们可以在定义是赋值,自动检测(前提:我们赋值必须是同一类型,可以是自定义数据类型)。
使用方括号[]来创建数组,并使用下标来访问元素,元素下标从 0 开始,例如:
let emptyArray = [String]() //创建一个空数组
let emptyArray1 = [] //通过传入的第一个数进行判断的空数组
var name = ["zhao","qian","sun","li","zhou"] //自我判断数据类型的数组
print(name)
//通过数组名遍历数组,输出为:["zhao","qian","sun","li","zhou"]
for var str: String in name {
print(str)
}
//通过遍历访问数组,输出为:zhaoqiansunlizhou
name[1] = "wu" //改变数组第二个元素,wu->qian
3.字典
字典通过键值(key:varlue)对的方式对数据进行存储,并且通过哈希函数的形式,保证了每个值得不同(实际上是键的不同,这与java中的set有点类似)
使用[:]的形式来创建字典,并使用键(key)来访问元素,例如:
var occupations = ["Malcolm": "Captain","Kaylee": "Mechanic"] //自动检查数据类型
var occupations1: [String : Int] //确定数据类型的空字典
var occupations2 = [:] //不确定数据类型的空字典
var occupations3 = [String : Int]() //确定数据类型的空字典
occupations["Jayne"] = "Public Relations" //新建一个元素
4.元组
元组这个概念还是第一次接触到,因此都是各方百度,整理出零零散散的内容:
(1) 元组是多个值组合而成的复合值,用 ( ) 表示,例如:
var Tuple: (Int,String,Int,Double) = (23,"liu",2018,1.80)
(2) 元组只能修改,不能添加和删除
(3) 元组当中可以存放元组,也可以存放键值对,可以通过对下标,或者键的方式访问元组中的元素,下标从0开始,例如:
var tuple = (23,"liu",2.0,A:2018)
print(tuple.0) //通过下标访问,打印结果:23
print(tuple.A) //通过键访问,打印结果:2018
(4) 当函数需要返回多个值的时候,可以通过元组返回,例如:
func maxminScores ( scores:[Int] ) -> (maxscore:Int, minscore:Int) { //传入数组,返回元组
var curmax = scores[0], curmin = scores[0]
for score in scores[1..<scores.count] {
curmax = max(curmax, score)
curmin = min(curmin, score)
}
return (curmax, curmin) //返回一个元组
}
(5) 元组中可以存放Any值,意思是可以存放任意值,也可以存放自定义模型(例如自定义类)
(6) 对元组中的元素可以做选择性的过滤,使用下划线表示忽略,例如:
var tuple = (22,"liu",A:2333,B:2.0) //一共四个元素
let (A,_,B,_) = tuple //下划线忽略两个元素,分别为"liu",B:2.0
print(A,B) //打印结果:22 2333