swift基础版本

swift4.0已经出现,为了巩固以前的知识,先上一版基础版本

下文是根据swift3.0的一本书挑拣后总结的,所有的代码都会以swift4.0为基础来做调试,避免有错误的地方


1、let常量、var变量

在swift中,不需要像OC或者很多语言一样,定义常量或者变量的类型,又不想JS一样,可以随时更改数据的类型.swfit在定义变量名的时候,会经过系统的推导,来获得这个变量的正确数据类型,我们也可以手工来制定这个类型,例如 let a:Double = 0,如果不指定,数字0默认是Int类型

常量:let pi = 3.1415926,这个pi常量是不允许修改的,如果后边有赋值pi = 3,则会在编译状态下报错 Cannot assign to value: 'pi' is a 'let' constant,不能赋值,pi是用let修饰的一个常数

变量:var a = 1 ; print(a) ; a = 2; print(a),打印分别是 1 2.在这里说明一下,swift中,代码如果分行写,是不需要加入任何的标点符号的,如果放到同一行,需要加入“;”来代表语句的分割

我们如果用 var pi = 3.14并且在后续代码中,都没有对pi的修改,系统不会报错,只会报一个⚠️;Variable 'a' was never mutated; consider changing to 'let' constant;变量a并没有发生过数值的更改,用let来修饰.所以我们在编写代码的过程中,不发生改变的变量都改成常量.让机器能更快的识别


2、类型元组

a、布尔型 Bool ,在swift中,Bool只有两个值 true 和 flase

b、整型,这个类型比较多Int8、Int16、Int32、Int64、Int、UInt8、UInt16、UInt32、UInt64、UInt,在众多的整型中,我们一般使用Int,而UInt为无符号整型用的比较少,其余的如果没有要求固定宽的整型,我们一般不使用.

接下来我们用不同的进制来把10赋值给常量

let a = 10(10进制);let b = 0b1010(2进制);let c = 0o12(8进制);let d = 0xA(16进制)

c、浮点型float(浮点型),Double(双精度浮点型) let pi = 3.1415926,系统会默认把未指定类型的浮点型认为是Double.

d、字符串类型 var a=""(空字符串),三个双引号,可以换行使用,之间的所有内容都是字符串内容.判断字符串是否为空,if a.isEmpty {}

e、数据转换 1、小范围到大范围转换是安全的 2、大范围到小范围转换是不安全的 3、布尔型和整形转换,非0即真,真为1

f、元组 就相当于用一个变量代表多个变量 var x = (1,2,3) ;(a,b,c) = x,相当于 a = 1 , b =2 ,c = 3,方便数据的传递

g、可选类型 类型后边加?代表可选,可以设置为nil

h、拆包 var str : String = nil ;if str == nil {print("数据为空")}else {print(str!)};print(str ?? "数据为空")


3、运算符

运算符和其他语言大多相同,我们来列举一下

a、算数运算符 +    -    *    / %

b、赋值运算符 =    +=    -=    *=    /=    %=

c、关系运算符 ==    !=    >    <    >=    <=

d、逻辑运算符    !    &&    ||

e、三元运算符    ? :


4、循环语句(控制转移语句)

a、for-in循环:for index in 1..<5 {print(index)}

b、while语句  var i = 0; while i<10 {print(i);i++)

c、repeat while  var i = 0; repeat {print(i);I++} while I < 10

d、continue 可以携带标签,指定跳转出哪个循环. labelA: for index in 1...4{for item in 2...3 {if intel == index {continue labelA}}}

e、break

f、fallthrough


5、分支语句

a、if    if true {print(“true”)}

b、if else    if a == “a” {print(“a”)}else {print(“not a”)}

c、else if    if a=="a"{print("a")}else if a=="b"{print("b")} else {print("not a and not b")}

d、switch    switch x {case 1: print("1") case 2,3,4 where x ==y : print("2 or 3 or 4");default :break}


6、字符和字符串

a、转义字符 \0    \\    \t    \n    \r    \"    \'

b、常见操作 

    1、字符串度    "hello".count

    2、前后缀判断    "hello".hasPrefix("he")    "hello".hasSuffix("lo")

    3、大小写转换    "Hello".uppercased()    "Hello".lowercased()    "hello".capitalized 首字母大写

    4、添加    var str = "hello"     str.insert("w",at: str.index(after:str.startindex))

    删除    var str = "hello"; let range = str.index(str.endIndex,offsetBy:-6)..

    5、字符串提取    str.substring(from:Index)从开始index    str.substring(to:Index) 到index结束    str.substring(with: Range)提取某个范围    字符串替换 str.replaceSubrange(range, with: "hello")

    6、遍历字符串    var str = "swift" for c in str.characters {print(c)}


7、Collection类型(数组、字典、集合)

a、数组    var arr : [String] = ["swift","oc","java","C"]

b、字典    var dict: [String : Any] = ["name":"swift","name":"OC","name":"java"]

数字和字典的操作基本相同

操作:追加、插入、删除、替换

泛型:数据和字典本身就是泛型 例如

Array 相当于 [String]

Dictionary相当于[String:Any]

var dict=["key1":"value1","key2":"value2"]

for key in dict.keys {

    print(key)

}

for value in dict.values {

    print(value)

}

for (key,value) in dict {

    print(key,value)

}

集合:是否包含某个元素 setStr : Set = ["a","b","c","d"]

if setStr.contains("a") {}        

let aSet : Set = [1,3,5,6]        

let bSet : Set = [2,4,5,6]        

print("并集\(aSet.union(bSet).sorted())")        

print("交集\(aSet.intersection(bSet).sorted())")        

print("前有后无\(aSet.subtracting(bSet).sorted())")        

print("差集\(aSet.union(bSet).subtracting(aSet.intersection(bSet)).sorted())")


8、函数闭包

函数声明

func 函数名(参数列表) -> 返回值类型{

    函数体

    return 返回值

}

inout 可以在函数内部更改外部的值

func swap(num1: inout Int, num2 : inout Int){}


9、枚举

10、结构体

11、类

12、协议与抽象类型

13、单元测试(看时间是否详细写)

你可能感兴趣的:(swift基础版本)