swift 拾遗

Swift函数

外部参数名

局部参数名前指定外部参数名,中间以空格分隔,外部参数名用于在函数调用时传递给函数的参数。

func pow(firstArg a: Int, secondArg b: Int) -> Int {
var res = a //内部参数
return res
}
pow(firstArg:5, secondArg:3)

可变参数

可变参数通过在变量类型名后面加入(...)的方式来定义。

func vari<N>(members: N...){
for i in members {
print(i)
}
}
vari(members: 4,3,5)
vari(members: 4.5, 3.1, 5.6)

Swift 闭包 = {}

let studname = { print("Swift 闭包实例。") }

全局函数和嵌套函数其实就是特殊的闭包。
全局函数:有名字但不能捕获任何值。
嵌套函数:有名字,也能捕获封闭函数内的值。
闭包表达式:无名闭包,使用轻量级语法,可以根据上下文环境捕获值。

Swift中的闭包有很多优化的地方:

  •   根据上下文推断参数和返回值类型
    
  •   从单行表达式闭包中隐式返回(也就是闭包体只有一行代码,可以省略return)
    
  •   可以使用简化参数名,如$0, $1(从0开始,表示第i个参数...)
    
  •   提供了尾随闭包语法(Trailing closure syntax)
    

参数名称缩写 { in }

$0 ,$1

尾随闭包

尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。
//定义
func someFunctionThatTakesAClosure(closure: () -> Void) {
// 函数体部分
}

// 以下是不使用尾随闭包进行函数调用
someFunctionThatTakesAClosure({
// 闭包主体部分
})

// 以下是使用尾随闭包进行函数调用
someFunctionThatTakesAClosure() {
// 闭包主体部分
}

捕获值

常量和变量的原域已经不存在,闭包仍然可以在闭包函数体内引用和修改这些值。

Swift 枚举

1. 原始值 枚举事例的原始值:rawValue

enum Planet: Int {
case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
}
let earthsOrder = Planet.earth.rawValue // 3

2. 关联值

enum Student{
case Name(String)
case Mark(Int,Int,Int)
}
var studDetails = Student.Name("Runoob")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
print("学生的名字是: (studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
print("学生的成绩是: (Mark1),(Mark2),(Mark3)。")
}

重写(Overriding)

  1. 重写函数 override func show() {}
  2. 重写属性
    // 继承超类 Circle
    class Rectangle: Circle {
    var print = 7
    override var area: String {
    return super.area + " ,但现在被重写为 (print)"
    }
    }

防止重写(final)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础语法 常量let和变量var 编译器会推断该变量类型.也可以指定类型 类型别名 typealiastypeal...
    楼上那位阅读 177评论 0 0
  • //// main.swift// Swift-SeniorGrammar//// Created by q...
    caohuienjoy阅读 386评论 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,880评论 1 10
  • 枚举 可以提供关联值 定义计算属性 实例方法 构造函数 遵循协议 定义: 关联值可以是不同的类型 原始值枚举成员可...
    楼上那位阅读 203评论 0 1
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,301评论 3 25