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)
}
}

Swift 中的基础语法(二)的更多相关文章

  1. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  2. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  3. JSP开发中的基础语法

    JSP 语法 JSP开发中的基础语法. 脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式: <% 代码片段 %> 或者 ...

  4. swift第一季基础语法

    同: 一.基础 同: 1常量和变量 2数据类型和数据类型转换 3别名 不同: 1可选类型optional 2BOOL类型 3元组类型 4断言Assertion 二.基本操作符 同: 1赋值和算术运算及 ...

  5. 从零开始学 Web 之 ES6(四)ES6基础语法二

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  6. [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结

    在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...

  7. Linux入门第五天——shell脚本入门(中)基础语法之判断与条件

    一.判断式 利用 test 命令进行执行结果的判断(例如判断是否存在该文件):关于test  test:test 示例:结合回传值 $? 进行判断:关于$?:$? [root@localhost tm ...

  8. Python 1基础语法二(标识符、关键字、变量和字符串)

    一.标识符 标识符就是程序员自己命名的变量名.名字需要有见名知义的效果,不要随意起名 :比如 a=1 a是个变量,a这个变量名属于标识符 1 company = '小米 2 employeeNum = ...

  9. python基础语法(二)

    本文主要包括以下内容 函数 切片 迭代 列表生成式 生成器 迭代器 函数 定义函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块 ...

随机推荐

  1. Redis和Memcache性能测试对比

    Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache全面胜出,当然Redis也有自己的优点:比如数据持久化.支持更多的数据结构(Set List ZS ...

  2. 3 Angular 2 快速上手启动项目Demo

    Angular2.x与Angular1.x 的区别类似 Java 和 JavaScript 或者说是雷锋与雷峰塔的区别,想要运行Angular2需要安装一些第三方依赖,不会像Angular1.x那样, ...

  3. javascript闭包的应用

    我印象中,javascript的闭包属于进阶的范畴,无非是用来在面试中装装逼而已.你看我身边的一个小伙子,有一天我装逼地问他什么是javascript的闭包,他居然连听都没听说过.但他做起前端的东西来 ...

  4. vs2010中设置qt环境的智能识别方案

    Qt搭建请参考:Win7系统VS2010下搭建qt开发环境 搭建好之后,虽然可以编译过去,但是写代码时,编辑器无法识别,也没有智能提示,并且代码中都是红色的提示如下: 此时需要设置一下include路 ...

  5. C项目实践--图书管理系统(1)

    1.功能需求分析 图书管理系统主要用于对大量的图书信息,包括书名.作者.出版社.出版日期.ISBN(书号)等进行增.删.改.查以及保存等操作.同时也包括对用户的管理,用户包括管理员和普通用户两种权限, ...

  6. javaScript改变HTML

    改变HTML输出流: 在JavaScript中,document.write() 可用于直接向HTML输出流写内容 <!DOCTYPE html> <html> <bod ...

  7. Android 6.0 RK3288 ROM编译详解+命令详解【转】

    本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...

  8. 解决多次异步请求紊乱问题 - JavaScript

    加入目前的需求这样的:       左边的菜单链接,点击后通过异步请求返回其HTML代码,然后innerHTML到右面的DIV中,加入切换菜单的速度非常快,最终会导致请求紊乱. 可以加入消息管理机制, ...

  9. Windows7下安装golang语言开发环境和revel框架

    1.下载先去下载32位或64 golang window 安装包 并安装下载地址:https://www.golangtc.com/download 本人更改了安装地址为 D:\GO\Go 2. go ...

  10. Python Import机制备忘-模块搜索路径(sys.path)、嵌套Import、package Import

    出处:http://blog.csdn.net/kernelspirit/article/details/3381666 最近在看<Python源码剖析>,对Python内部运行机制比以前 ...