Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。2015年的WWDC开发者大会上,苹果公司推出了Swift2.0版本,并且Swfit完全开源。自从Swift发布以来,在http://www.tiobe.com中的排行一直处于上升的状态。swift的使用也更加广泛,越来越多的开发人员,尝试使用swift进行开发。
这里只进行swift的一些基础语法的介绍,
//MARK: - 定义常量变量和变量类型的隐式转换(常量使用let修饰,变量使用var修饰)
1 //MARK: - 定义常量变量和变量类型的隐式转换(常量使用let修饰,变量使用var修饰) 2 let name1 : String = "jackss" //定义String类型的常量 3 var name2 : String = "jackss" //定义String类型的变量 4 let name = "jack"//或者var name = "jack" 如果没有类型修饰符,它会隐式转换(根据后面的类型自动识别name为String类型) 5 let age : Int = 18//如果定义常量最好给出初始值,定义变量可以不给初始值 6 var age1 : Int? //表示age1的类型为可选类型,其值可以为空 7 var cha : Character = "A"//定义字符类型的变量 8 //print(cha) 9 //定义一个bool类型的变量___在swift中bool类型的变量只有true或者false 10 var flag1 : Bool = true 11 var flag2 : Bool = true
//MARK: - 字符串String
1 //1.创建空的字符串 2 var str_empty = "" 3 var str1_empty = String() 4 //2.判断一个字符串是否为空字符串 5 if str_empty.isEmpty{ 6 print("str_empty is empty"); 7 } 8 //3.字符串的拼接 9 var str_url1 = "http://" 10 var str_url2 = "www.baidu.com" 11 let str_new_url = str_url1 + str_url2 12 print(str_new_url)//第一种打印方式 13 print("百度网址:\(str_new_url)\n") // 第二种打印方式 14 15 //4.获取字符串的长度 16 var str1 : String = "abcdef" 17 //5.字符串的比较 18 var str2 = "zifuchuanyi" 19 var str3 = "zifuchuaner" 20 if str2 != str3 { 21 print("他俩不相等") 22 }
//MARK: - 数组
1 //定义一个数组,Swift中数组中的 元素类型必须相同 2 var nameArray = ["WWW", "eee", "ash", "skla"] 3 var nameAray1 : Array<String> = ["yaqian", "danci", "heidehao"] 4 print(nameAray1[2]) 5 6 //向数组中添加元素 7 var int_array = Array<Int>() 8 int_array.append(520) 9 int_array.append(123) 10 //print(int_array) 11 12 //使用运算符添加数组元素 13 int_array += [12] 14 15 //使用运算符添加多个数组元素 16 int_array += [13,14] 17 18 //插入元素到具体的位置 19 int_array.insert(22, atIndex: 1) 20 21 //移除某个元素 22 int_array.removeAtIndex(1)
//MARK: - 字典
1 //定义一个字典类型的变量 2 var dic : Dictionary<String,Int> = ["a":18, "b":19, "c":43, "d":89] 3 //定义空字典 4 var dic1 : Dictionary<String,Int> = [:] 5 var dic2 = Dictionary<String,Int>() 6 //往字典里添加键值对或者修改(若存在键值就是修改,若不存在就是添加) 7 dic["m"] = 50 8 //删除字典中的内容(根据键去删除) 9 dic.removeValueForKey("m")
//MARK: - 元组
1 //定义一个元组 2 //方法一:隐式转换 3 let tuples = ("课程",["语文", "数学", "物理"]) 4 //方法二:显示初始化的方式 5 let tuplesNew : (String, Array) = ("课程",["语文", "数学", "物理"]) 6 //取出元组中的值 7 //第一种方式:直接把元组赋值给另外一个常量,根据相关标记进行取值 8 let tuplesNew1 : (classroom:String,course:Array) = tuplesNew 9 var classInfo = tuplesNew1.classroom + tuplesNew1.course[0] 10 print(classInfo) 11 //第二种方式:直接根据下标取值 12 var classInfoNew = tuplesNew.1[2] + tuplesNew.1[0] 13 print(classInfoNew)
//MARK: - 循环:循环方式很多这里只介绍较简单的几种
1 //第一种形式 2 for var i = 1;i < 10;i++ { 3 print(i)//不包括10 4 } 5 //第二种形式 6 for number in 1..<10 { 7 print(number)//不包括10 8 } 9 //第三种形式 10 for number in 1...10 11 { 12 print(number)//包括10 13 } 14 repeat {//先执行一次循环体,再进行相关的循环 15 //print("love") 16 }while 1 < 0
//MARK: - 遍历:遍历数组跟OC类似,下面只介绍一下遍历字典
1 var animalDic = ["dog" : "🐶", "pig" : "🐷","fish" : "🐟","dragon" : "🐲","monkey" : "🐵",] 2 for (key, value) in animalDic { 3 print("key = \(key), value = \(value)") 4 }
//MARK: - 分支结构 (if结构和switch格式)
1 //if形式的 2 let flag4 = true 3 if flag4 == true { 4 //print("我是真的真的") 5 6 }else { 7 //print("这是假的") 8 } 9 10 //switch形式使用fallthrough实现贯穿每种可能(全部打印) 11 let value = 0 12 switch value { 13 case 0: 14 print("0") 15 fallthrough 16 case 10: 17 print("10") 18 fallthrough 19 default: 20 print("other") 21 } 22 //特点二:case之后可以使用一个范围(默认后面加了break) 23 switch value { 24 case 0...10: 25 print("输出0-10之间的数值") 26 case 10..<100: 27 print("输出10-100之间的数值") 28 default: 29 print("other") 30 } 31 //特点3:case后可以使用let和var修饰的常量或者变量;where是满足某种条件 32 switch value { 33 case var i where value>=0 && value < 6: 34 i = 99 35 print(i) 36 default: 37 print("other") 38 } 39 40 //特点4:case后还可以匹配一个元组 41 let point = (10,10) 42 switch point { 43 case (10,0): 44 print("1111111") 45 case (10,8): 46 print("22222") 47 case (_,10)://_代表可以忽略某个元素 48 print("3333333") 49 case (10,10):// 50 print("4444444") 51 default: 52 print("other") 53 54 }
//MARK: - 枚举(enum)
1 //枚举原始类型为int类型 2 enum Direction:Int { 3 4 case east = 0 5 case south = 1 6 case west = 2 7 case north = 3 8 } 9 print(Direction.east.rawValue)//rawValue就是找到相对应枚举的原始值 10 //根据原始值获取枚举的类型 11 print(Direction(rawValue: 2))
//MARK: - 函数
1 //1.无参无返 2 func function1() -> Void { 3 print("无返回值,无参数") 4 } 5 6 function1() 7 8 //2.无返回值,有参数 9 func function2(name str:String) -> Void { 10 print(str) 11 } 12 13 function2(name: "haode") 14 //3.有返回值,无参数 15 func function3() -> String { 16 17 return "炸天" 18 } 19 print(function3()) 20 21 //4.有返回值,有参数 22 func function4(num1:Int,num2:Int) -> Int { 23 return num1 + num2 24 } 25 print(function4(5, num2: 6)) 26 27 //函数的返回值为元组类型的 28 func function5(num1:Int,num2:Int) -> (Int,Int,Int) { 29 30 return (num1 + num2, num1 - num2,num1 * num2) 31 } 32 print(function5(2, num2: 1))
1 //外部参数和内部参数//first和second是外部参数,在函数调用的时候,会显示出来这两个名称 2 //one和two是内部参数,内部函数在函数内部使用 3 //默认情况下,第一个外部参数在调用的时候不显示,其余的均显示,而且和你定义的名字一样 4 func function6(first one:Int,second two:Int) { 5 print((one,two)) 6 } 7 8 function6(first: 12, second: 2) 9 10 //如果都不想显示外部参数: "_"的作用是忽略(注意空格) 11 func function7(one:Int,_ two:Int) { 12 print("忽略外部参数") 13 } 14 15 function7(8, 9) 16 17 //函数的嵌套 18 func test1() { 19 func test2() { 20 func test3(){ 21 print("今天天气好晴朗处处好风光") 22 } 23 test3() 24 } 25 test2() 26 print("今天天气不是很好") 27 } 28 29 //inout修饰的参数 30 func test(inout name:String){ 31 name = "wangwang" 32 print(name) 33 } 34 35 var myName = "yuanyuan" 36 print("myName:\(myName)") 37 test(&myName) 38 print(myName)
来源:https://www.cnblogs.com/bdlfbj/p/5530836.html