Swift之基础学习一

早过忘川 提交于 2020-03-04 06:54:31

Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OSiOS平台,用于搭建基于苹果平台的应用程序。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)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!