【iOS】Swift中的函数、断言、枚举等
函数与方法、枚举等的书写格式与用法较OC还是变化很大的。
一、函数
1.1 无返回值, 无形参
func myTest2(){ println("Hello") }
1.2 有返回值,有形参
func myTest1( num1:Int , num2:Int ) -> String{ return String(num1 + num2) }
1.3 外部参数. (相当于给参数起了个别名,方便识别记忆)
func myTest3 (myNum1 num1 :Int ,myNum2 num2: Int){ println(num1 + num2) } myTest3(myNum1: 1, myNum2: 2) //调用 func myTest4 (#num1 :Int ,#num2: Int){ //前面加#表示直接用形参名作为外部参数名 println(num1 + num2) } myTest4(num1: 2, num2: 3)
1.4 默认参数. (类似C++)
func myTest5(num1:Int , num2:Int = 10){ println(num1+num2) } myTest5(1) myTest5(1, num2: 22) //后面一个参数默认是以形参为外部参数名的 func myTest6(num1:Int , _ num2:Int = 10){ //忽略形参的外部参数名, 在参数前加_ println(num1+num2) } myTest6(1, 22)
1.5 常量与变量参数. (默认情况下,Swift的参数都是常量参数,是不能修改的)
//其他语言中, 如C语言是没有这个概念的. 可以随意修改 func myTest7(let num1:Int, num2:Int){ // num2 = 10 //这句是错误的, 不能修改 println(num1+num2) } func myTest8(var num1:Int, num2:Int){ //加上var即可, 变为变量参数. 可以修改 num1 = 10 println(num1+num2) }
二、断言
和C语言基本一样,没什么好说的
var a = 10 assert(a>5, "Right")
三、枚举
不会像C语言中一样,默认会被赋值为0,1。。。
3.1枚举格式
enum CompassPoint{ case North //case表示新的一行成员被定义 case South case East case West case A, B, C //多个成员也可以出现在同一行上 }
3.2 访问枚举
var direct = CompassPoint.North direct = .South //因为前面访问过, 后面自动推断. 可不写枚举名 //CompassPoint.A
3.3 枚举结合Switch使用
switch direct{ case .North: println("Lots of planets have a north") case .South: println("Watch out for penguins") case .East: println("Where the sun rises") case .West: println("Where the skies are blue") default: println("OK") }
3.4 关联枚举. 可关联变化的值
enum Barcode{ case UPCA(Int,Int,Int) //关联了3个参数 case QRCode(String) //关联了一个字符串 } // var productBarcode = Barcode.UPCA(0, 1, 2) //这样使用, 关联了3个数.
3.5 枚举原始值.
enum MyASCII : Character{ //定义类型了 case Tab = "\t" case LineFeed = "\n" } enum Planet: Int { case Mercury = 1, Venus, Earth, Mars, Jupite, Saturn, Uranus, Neptune } //使用toRaw方法可以访问枚举的原始值 println(Planet.Venus.toRaw()) //值为2, 这个自动递增 //使用fromRaw可找到原始的枚举成员 println(Planet.fromRaw(2)) //返回的是可选的类型, 意味着不一定存在
评价:为旧东西增加了新功能,简化了OC中函数的写法。对于用惯了OC的还是稍有不适应。
参考:
The Swift Programming Language
Apple Dev Center
转载请注明出处:http://blog.csdn.net/xn4545945
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。