let定义常量,不能修改
let a = 5 a= 6//错误
var 定义变量可用于更改
var a = 5 a = 6
swift中所有的基本类型都是值类型,包括String
swift中的类都是大写,下面的常量声明是显示指定类型
let i: Float = 5.5 //不指定类型编译器默认推断为double
//常用的类型String、character、bool、float、double、int
let bo = true let str = "hello word" let ch: Character = "a"
元祖类型(tuple),元祖声明的语法就是一个括号,逗号分隔用来存放多个数据
let t = (404, "not found") let t1 = (1,2,3,4,5) //通过下表来访问元祖 t.0 t.1
let t2 = (name: "CJ", age: 35.5)//不需要给每个成员都取名字
t2.name
t2.age
let t3:(name: String, age: Float) = ("cj2", 46.6)
t3.age
t3.name
let t4:(String, Float) = ("aaa", 5)
t4.0
t4.1
let t5:(name: String, Float) = ("bbb", 6)
t5.1
let t6:(String, Float) = (name: "xxx", agr: 55)
t6.0
t6.1
//t6.name 这是错误的,因为在声明的时候没有指定名字,所以不能用名字访问
下面的写法(声明的同时就赋值)不行
let t8: (name: String = "aaa", age: Float = 22)
String类型
let str1: String str1 = "aaa" var str2 = "abcdefg" str2.characters.count//取字符串长度 str2.startIndex//字符串开始下标 str2.endIndex //结束下标 str2[str2.startIndex]//取字符串第一个字符 str2[str2.startIndex +1]//不能 + str2[str2.index(after: str2.startIndex)] //取字符串第一个字符后面的一个字符,即是 "b" str2[str2.index(before: str2.endIndex)]//取字符串最后一个字符,即是 "g" str2[str2.index(str2.startIndex, offserBy: 3)] //取字符串从下标0开始到第下标3的位置,既是 d str2[str2.index(str2.endIndex, offsetBy: -3)] //取字符串从最后一个位置开始,倒数第3的位置 ,既是 e str2.substring(to: str2.index(str2.startIndex, offsetBY: 3)) //截取字符串下标0开始,往后三个字符,既是 abc str2.substring(from: str2.index(str2.startIndex, offserBy:3)) //截取字符串下标3往后的所有字符 str2.uppercased() //转大写 str2.lowercased() //转小写 str2.capitalized 首字母大写 str2.hasPrefix("abc")//是否有前缀 “abc” str2.hasSuffix("abc")//是否有后缀 str2.contains("de") //是否包含 “de”
swift操作符基本与c#,java一样
switch...case ,在swift里面,switch 没有break,匹配到的时候,会自动跳出,不会贯穿。
case里面必须全部包含比如:
bool,必须case:true,case:false;
但如果只有false那么default必须要加,否则报错。
let age = 5
switch age {
case 25:
print("25")
}
case 35:
print("35")
default:
print("默认")
swift可以使用...,代表范围
switch age{ case 1...60: printf("asd") default: print("fei") }
/******** 集合 Array,Dictionary,Set ***/
Dictonaty数组
var dic = ["a":abc, "b":"def" ] dic["a"] //可用下标和key取数组 dic["c"] = "gg"//赋值 dic.count //循环取key for k in dic.keys{ print(k) } for v in dic.values{ print(v) } for (k,v) in dic{ print("key is (k) value (v)") }
Set集合
set是一个值不重复,有相同的值,编译器不会报错,但会忽略掉重复的值,并且是无序的
var s: Set<Int> = [1,2,3,4,5,5] s.count s.insert(2) //插入值2
var s1: Set<Int> = [2,3,6,7]
let r1 = s.intersection(s1) // s,s1集合相交的值 及2,3
s.union(s1) //互补
Array集合
let arr2: Array<Int> = Array<Int>() var arr3 = [1,2,3,3] let arr4: Array<Int> = [] arr3[0] arr3.append(5) arr3.append(contentsOf: [6,7,8]) arr3 += [10,11] //arr3.insert(contentsOf: <#T##Collection#>, at: <#T##Int#>) //arr3.remove(at: <#T##Int#>)