1.Swift 中的函数

 /// 函数的定义
///
/// - Parameters:
/// - x: 形参
/// - y: 形参
/// - Returns: 返回值
func sum(x: Int, y: Int) -> Int {
return x + y
}

    print(sum(x: 10, y: 20))

 
   /*
外部参数就是在形参前面加了一个字
外部参数不会影响函数内部的细节
外部参数会让外部调用看起来更加直观
外部参数如果使用了'_',在外部调用函数时,会忽略形参的名字
"_" 就是可以忽略任意不感兴趣的内容
*/
func sum1(num1 x: Int, num2 y:Int) -> Int { return x + y;
}

    print(sum1(num1: 10, num2: 20))

 
 func sum2(_ x: Int, _ y:Int) -> Int {
return x + y;
}
print(sum3())

设置默认值的函数

   // 默认值
func sum3(x: Int = , y: Int = ) -> Int {
return x + y
}
这里比较灵活

print(sum3(x: 10, y: 20))
print(sum3(x: 10))
print(sum3(y: 20))

 

无返回值的函数

  func demo1() {
print("哈哈")
} func demo2() -> (){
print("呵呵")
} func demo3() -> Void {
print("嘻嘻")
}

demo1()
demo2()
demo3()

 

2.闭包

 // 1.闭包,最简单的闭包
//n 如果没有参数,没有返回值 可以省略 连 in 都一起省略
// option + click
let b1 = {
print("hello")
}
b1()

    // 带参数的闭包
//闭包中,参数,返回值 实现的代码都是写在{}中
// 需要使用一个关键字 “in” 分隔定义和实现
// {形参列表 -> 返回值类型 in // 实现代码}
let b2 = {
(x: Int) -> () in
print(x)
} b2()
   //带参数 带会返回值的闭包
let b3 = {
(x: Int) -> Int in return x +
}
print(b3())

需要注意的是,

// 如果函数的最后一个参数是闭包 函数参数可以提前结束,最后一个参数直接使用{}包装闭包的代码

3.swift 解决循环引用的办法

  1.仿照OC 解决

  

 //弱引用的对象 又一次执行 nil的机会
weak var weakSelf = self
loadData { (result) in
print(result,weakSelf)
}
}
    //[weak self] 和 __weak typeof(self) 作用类似  -> 对象被回收是 内存地址会自动指向nil  更加安全 推荐使用这种方式
func methodInSwift1() {
loadData { [weak self] (result) in
print(result,self)
}
}
    // [unowned self] 和 __unsafe__retained作用类似  -> 对象被回收是 内存地址不会自动指向nil 会造成野指针访问

    func methodInSwift2() {

        loadData { [unowned self] (result) in
print(result,self)
}
}

最新文章

  1. 深入jQuery中的data()
  2. C# 类型转换问题一
  3. 10 Python Optimization Tips and Issues
  4. linux ps命令介绍
  5. JavaScript实现网页右下角弹出窗口代码
  6. Android中获取网页表单中的数据
  7. openwrt固件支持3G和4G上网卡
  8. 学生问的一道javascript面试题[来自腾讯]
  9. Python3NumPy——数组(2)之数学空间与NumPy空间
  10. js通過name获取input框输入值
  11. nginx日志 logrotate配置
  12. 大杂烩 -- 简析TCP的三次握手与四次分手
  13. Centos7 linux下通过源码安装redis以及使用
  14. oracle视图(转)
  15. go相关环境变量 PATH GOPATH GOROOT
  16. window搭建Tomcat服务
  17. jsp javabean开发模式
  18. MySQL--忘记MYSQL管理员密码
  19. js获取或判断任意数据类类型的通用方法(getDataType)和将NodeList转为数组(NodeListToArray)
  20. Spring源码分析(十八)创建bean

热门文章

  1. MongoDB 操作手冊CRUD 更新 update
  2. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
  3. [IT学习]阿铭Linux 微信公众号 每日一题 解析
  4. C项目实践--学生成绩管理系统
  5. H264编码器性能測试
  6. 在VS2010下使用AppFace
  7. XMU 1617 刘备闯三国之汉中之战 【BFS+染色】
  8. C#温度报警
  9. YTU 2852: 二分查找
  10. 并不对劲的bzoj3832: [Poi2014]Rally