Swift 中的基础语法(二)
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 中的基础语法(二)的更多相关文章
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- JSP开发中的基础语法
JSP 语法 JSP开发中的基础语法. 脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式: <% 代码片段 %> 或者 ...
- swift第一季基础语法
同: 一.基础 同: 1常量和变量 2数据类型和数据类型转换 3别名 不同: 1可选类型optional 2BOOL类型 3元组类型 4断言Assertion 二.基本操作符 同: 1赋值和算术运算及 ...
- 从零开始学 Web 之 ES6(四)ES6基础语法二
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...
- Linux入门第五天——shell脚本入门(中)基础语法之判断与条件
一.判断式 利用 test 命令进行执行结果的判断(例如判断是否存在该文件):关于test test:test 示例:结合回传值 $? 进行判断:关于$?:$? [root@localhost tm ...
- Python 1基础语法二(标识符、关键字、变量和字符串)
一.标识符 标识符就是程序员自己命名的变量名.名字需要有见名知义的效果,不要随意起名 :比如 a=1 a是个变量,a这个变量名属于标识符 1 company = '小米 2 employeeNum = ...
- python基础语法(二)
本文主要包括以下内容 函数 切片 迭代 列表生成式 生成器 迭代器 函数 定义函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块 ...
随机推荐
- Redis和Memcache性能测试对比
Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache全面胜出,当然Redis也有自己的优点:比如数据持久化.支持更多的数据结构(Set List ZS ...
- 3 Angular 2 快速上手启动项目Demo
Angular2.x与Angular1.x 的区别类似 Java 和 JavaScript 或者说是雷锋与雷峰塔的区别,想要运行Angular2需要安装一些第三方依赖,不会像Angular1.x那样, ...
- javascript闭包的应用
我印象中,javascript的闭包属于进阶的范畴,无非是用来在面试中装装逼而已.你看我身边的一个小伙子,有一天我装逼地问他什么是javascript的闭包,他居然连听都没听说过.但他做起前端的东西来 ...
- vs2010中设置qt环境的智能识别方案
Qt搭建请参考:Win7系统VS2010下搭建qt开发环境 搭建好之后,虽然可以编译过去,但是写代码时,编辑器无法识别,也没有智能提示,并且代码中都是红色的提示如下: 此时需要设置一下include路 ...
- C项目实践--图书管理系统(1)
1.功能需求分析 图书管理系统主要用于对大量的图书信息,包括书名.作者.出版社.出版日期.ISBN(书号)等进行增.删.改.查以及保存等操作.同时也包括对用户的管理,用户包括管理员和普通用户两种权限, ...
- javaScript改变HTML
改变HTML输出流: 在JavaScript中,document.write() 可用于直接向HTML输出流写内容 <!DOCTYPE html> <html> <bod ...
- Android 6.0 RK3288 ROM编译详解+命令详解【转】
本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...
- 解决多次异步请求紊乱问题 - JavaScript
加入目前的需求这样的: 左边的菜单链接,点击后通过异步请求返回其HTML代码,然后innerHTML到右面的DIV中,加入切换菜单的速度非常快,最终会导致请求紊乱. 可以加入消息管理机制, ...
- Windows7下安装golang语言开发环境和revel框架
1.下载先去下载32位或64 golang window 安装包 并安装下载地址:https://www.golangtc.com/download 本人更改了安装地址为 D:\GO\Go 2. go ...
- Python Import机制备忘-模块搜索路径(sys.path)、嵌套Import、package Import
出处:http://blog.csdn.net/kernelspirit/article/details/3381666 最近在看<Python源码剖析>,对Python内部运行机制比以前 ...