斯威夫特 -从0开始 FirstDay
2015-12-09 22:02
323 查看
* [零碎导入]*
1, 特点:
swift 同时具备编译性语言的高性能和脚本语言的灵活性;
高性能: OC, C#所有代码必须每一行没有错误才会执行;
灵活性:脚本语言 不一定所有代码都正确才会执行,对多少行 执行多少行;
可以与C, OC混合使用;
2,使用条件:
Xcode >= 6.0
Mac系统 >= 10.9.3
3, 人物
Swift首席架构师 Chris Lattner
LLVM 编译器项目发起者之一
Clang编译器的开发者
Xcode开发部门主管
4, 其他:
一般OC文件一个类分为.h和.m文件, OC里面有c++代码文件的时候 后缀是.mm; 而swift文件每个类的后缀名都是.swift,只有一个,没有.h之类对应的;
1 不需要编写main函数 (程序从上往下顺序执行,所以最前面的代码会被自动当做程序的入口)
2 不需要在每一条语句的后面加上分号 (喜欢的话也可以加上) 但有一种情况必须加分号: 同一行代码上有多条语句时;
3注释 :swift可以进行多行嵌套注释;
4 声明
let 声明常量 ; var 声明变量;
5, swift中的代码格式要求要严格,比如空格, 不能随便打, 一句代码中,要么不要打空格,要么前后空格要对应; 如果只打一个空格的话 系统就会识别为空格是断句的,会报错;
[代码示例]
1. 简单变量声明定义 ;变量赋值; 变量相加
数组,字典的操作
元组的定义 使用
分支语句
斯威夫特中函数的使用
枚举和结构体的用法
1, 特点:
swift 同时具备编译性语言的高性能和脚本语言的灵活性;
高性能: OC, C#所有代码必须每一行没有错误才会执行;
灵活性:脚本语言 不一定所有代码都正确才会执行,对多少行 执行多少行;
可以与C, OC混合使用;
2,使用条件:
Xcode >= 6.0
Mac系统 >= 10.9.3
3, 人物
Swift首席架构师 Chris Lattner
LLVM 编译器项目发起者之一
Clang编译器的开发者
Xcode开发部门主管
4, 其他:
一般OC文件一个类分为.h和.m文件, OC里面有c++代码文件的时候 后缀是.mm; 而swift文件每个类的后缀名都是.swift,只有一个,没有.h之类对应的;
1 不需要编写main函数 (程序从上往下顺序执行,所以最前面的代码会被自动当做程序的入口)
2 不需要在每一条语句的后面加上分号 (喜欢的话也可以加上) 但有一种情况必须加分号: 同一行代码上有多条语句时;
3注释 :swift可以进行多行嵌套注释;
4 声明
let 声明常量 ; var 声明变量;
5, swift中的代码格式要求要严格,比如空格, 不能随便打, 一句代码中,要么不要打空格,要么前后空格要对应; 如果只打一个空格的话 系统就会识别为空格是断句的,会报错;
[代码示例]
1. 简单变量声明定义 ;变量赋值; 变量相加
// let 定义不可变的 定量 let name = "李蝇" //var 定义变量 var age = 25 age = 30 //在swift中类型推断 //在定义变量的时候给定了类型 就是告诉我们 我们下面在给其赋值的时候 必须要是一样的类型 let number = 19 let number1 = 21 //如果给定类型了 在后面赋值的时候 必须要给你给定的类型相匹配 var name3 :String = "你好" //在swift中使用加号 必须是相同类型的变量 print(number + number1) let name1 = "李颖蝇" let name2 = "绿莹莹" print(name1 + name2)
数组,字典的操作
let array = [12,34,23,546,] //不可变的数组 不能进行增删改查 var array2 = [24,35,67,33] //定义一个可变数组 array2.append(100) //给可变数组添加元素 array2.insert(1000, atIndex: 3) //把数组插入到指定位置 print(array2) array2.removeAtIndex(0) //删除数组中指定元素 array2[2] = 999 //修改数组中的元素 var array3 :Array = [String]() //初始化一个空数组 定义数组类型只存储字符串类型元素 array3.insert("liyingying", atIndex: 0) var array4 :Array = [AnyObject]() //定义可以插入任意类型元素的数组 array4.insert("qige", atIndex: 0) array4.insert(666, atIndex: 1) //定义字典类型 var dict1 = [ "李颖":"猫", "李莹":"鸟" ] dict1.updateValue("狗", forKey: "李英") //在字典中增加元素 (字典是无序的) print(dict1) dict1.removeValueForKey("李莹") //删除字典中键值对 dict1.updateValue("汪汪", forKey: "李英") //修改字典中的键值对 //定义空的字典 var dict3 :DIctionary = [String : String] //或者下面的定义方法;这种的定义Value只能是字符串 var dict2 :Dictionary = [String : AnyObject]() //字典的key只能是字符串类型 dict2.updateValue(666, forKey: "狗") print(dict2) // //swift中特殊字符以及汉字也可以定义变量 var 狗 = "李颖" print(狗) //打印结果: 李颖
元组的定义 使用
//定义一个元组 任何类型都能放到元组里面 (跟结构体不一样 //在swift中 swift可以存放任何类型,类似OC中的结构体 //元组用于函数具有多个返回值时 var group = ("琦哥",18,183,75.0) print(group.0) var group1 = (name:"seth",age:20,height:185,weight:70) print(group1.height) //元组可以修改 group1.name = "qige"
分支语句
//if判断语句 let cool = false if cool == true { print("好爽") }else { print("不爽") } //switch语句 let number3 = < c114 span class="hljs-number">10 switch number3 { //在swift中,switch语句不需要加break,就可以阻断执行 case 0 : print("小屁孩") //fallthrough //如果你想让这些语句不阻断继续执行下去,在后面加fallthrough case 10 : print("大屁孩") // fallthrough default : print("人精") //OC中default可有可无, swift中必须有 } //利用switch写一个大于等于0 小于10,和大于等于10 小于等于100的不同情况 switch number3 { **// ..< 是一个半闭半开区间; ...是全闭区间** case 0 ..< 10: //swift中的空格格式有严格要求; 前面有的话后面对应要有,不然后被认为是断句 print("小孩") case 10 ... 100: print("壮士") default: print("died") } //for循环 for var i = 0; i < 10; i++ { print(i) //从0到9循环打印 } //for in形式的for循环 let animal = ["老鼠","牛","老虎","兔子","馬"] for a in animal { //遍历数组 print(a) } //forin循环打印字典 let animal1 = [ "狗":"666", "猪":"777" ] for (key,value) in animal1 { print("\(key) \(value)") //打印出key的打印方式 } for (_,value) in animal1 { //只打印key或value中的一个的方式 print("\(value)") } for (key,_) in animal1 {//只打印key或value中的一个的方式 print("\(key)") } //while循环语句 var number5 = 100 while number5 > 0 { number5-- print(number5) /打印99 -- 0 }
斯威夫特中函数的使用
//首先是一个最简单的 无参无返回值的 (简便写法: 无返回值的可以不写后面的空返回值 func test() ->Void { //简便形式的写法:func test() print("欧巴思密达") } test() //打印出 欧巴思密达 //无参有返回值的 func test1() ->String { return "666" } var re = test1() print(re) //打印出666 //有参无返回值的 func test2(a:Int) ->Void { print(a) } test2(20) //传入参数20 打印出20 //有参有返回值的 func test3(a:Int) ->Int { return a } let b = 10 let c = test3(b) print(c) //传入参数10 打印出10 //返回值是元组的函数 func test4(a:Int,b:Int) ->(Int,Int) { return(a+b,a-b) } let x = 10 let y = 20 print(test4(x, b: y)) //练习 函数 //交换两个值的函数 //***在swift中 参数修饰默认都是let修饰的,如果想改变内部参数值,必须要加上inout修饰 (或者定义变量类型var来定义)*** func change(inout a:Int,inout b:Int) ->Void { let temp = a a = b b = temp } var i = 10 var j = 20 change(&i, b: &j) print("\(i) \(j)") //打印多个值的格式
枚举和结构体的用法
//枚举 enum enum season { case Spring case Summer case Autumn case Winter } //带值的枚举 enum seasons :Int { case Spring = 1 case Summer case Autumn case Winter } //拿枚举值的两个方法: print(seasons.Summer.rawValue) // .rawValue 这个拿到的是自己定义的给定的枚举的值;一般拿值是用这个方法; 打印结果是2 print(seasons.Summer.hashValue) // .hashValue 这个拿到的是默认的枚举的值; 打印结果是1 //结构体 可以放属性和方法 struct fiveCircle { var name:String var age:Int func method1() { //结构体中定义的无参无返回值的方法 print("啊~~~~五环") } static var name1:String? // //类方法 static func method2() { //static用来修饰类方法的修饰词 print("你比四环多一环") } } //初始化一个结构体 var five = fiveCircle.init(name: "琦哥", age: 20) five.method1() //实例方法 用实例来调用 fiveCircle.method2() // 结构体的类方法 //声明一个类跟结构体很像, 类里可以声明属性和方法 //类 class Person { }
相关文章推荐
- PAT.成绩排名
- CCNP学习笔记6-路由部分--OSPF综合题
- Maltab结合Opencv配置并进行编译
- scala的继承、组合与特质trait
- Opencv摄像头标定(参数+校正),但cvFindChessboardCorners不太稳定,必须标版
- 小学四则运算APP 第二阶段冲刺-第五天
- servlet 跳转后CSS失效解决办法
- HDU1215解析
- 线性表的基本操作实现(基于链表)
- iOS开发——网络连接判断
- muduo源码分析:线程池类ThreadPool
- 选菜
- java(7)--上传文本文件
- scala操作符和关键字
- 05-UIKit绘图演练
- Unity脚本在层级面板中的执行顺序测试2
- linux下chmod命令的使用
- Idea+Maven创建scala项目
- 操作系统知识点总结
- 关于继承CListView类在退出时出现异常的解决方案