swift 学习笔记一
看 Developing IOS 8 Apps with swift 的时候看到一些比較实用的点,记录一下:
1、将函数作为參数传递。
比如:
写一个两个数求和的函数:performOperation(multiply)
func performOperation(operation:(Double,Double) -> Double) {
if operandStack.count >= 2 {
dispalayValue = operation(operandStack.removeLast(),operandStack.removeLast())
enter()
}
} func multiply(op1: Double, op2: Double) -> Double {
return op1 * op2
}
以上。有更酷的实现,用闭包的方法:
改进为:
performOperation ({ (op1: Double, op2: Double) -> Double in
return op1 * op2
}) func performOperation(operation:(Double,Double) -> Double) {
if operandStack.count >= 2 {
dispalayValue = operation(operandStack.removeLast(),operandStack.removeLast())
enter()
}
}
编译器会依据上下文判断类型。所以,以上的 performOperaion 又能够简化为:
performOperation ({ (op1, op2) in
return op1 * op2
})
op1,op2 的类型能够判断,当然返回类型也能够判断,故而返回类型也可省去。甚至连 return 也能够省去。
因为编译器不强制你一定要写形參,故这里的 op1, op2 也能够省去,用 $0, $1, $2, ...... 分别代表第一个第二第三个參数等等。
所以。上面又能够再次简化为:
performOperation ({ op1 * op2 })
swift 的编译器真 TMD 仅仅能,哈哈!
等等,还没完,
再简化为:
performOperation () { op1 * op2 }</span>
有个条件,就是 op1 * op2 是作为最后一个參数传递的时候就能够这样做,把函数參数移到括号外面,如上。
其它的,假设有另外的參数的话就能够像之前的那样放在括号()里面;假设仅仅有一个參数的话。括号还能够直接去掉。例如以下:
performOperation { op1 * op2 }
至此,简化完成。
2、swift 支持多态,What an amazing !
比如。当你要求一个数的平方根的时候,而已还是想用回原来的函数 performOperation 。可是这个函数要求的形參是一个包括两个 Double 类型的函数。求平方根仅仅须要传入一个參数即可了啊,那么来改造一下这个函数吧,在写一个同名的函数 performOperation 。然后定义为仅仅须要一个形參就好了。
注意:swift 支持在一个类中同一时候存在同名的多个函数,形參不一样就好了,就是多态啦~
那么。再添加一个 performOperation 函数,例如以下:
func performOperation(operation: Double -> Double) {
if operandStack.count >= 1 {
dispalayValue = operation(operandStack.removeLast())
enter()
}
}
如今就能够这样调用来计算数值平方根了。
performOperation { sqrt($0) }
很多其它,能够观看《Developing IOS 8 Apps with Swift》的 More Xcode and Swift, MVC 一节。
swift 学习笔记一的更多相关文章
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记4——扩展、协议
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记2——函数、闭包
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记1——基础部分
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- Swift学习笔记一
最近计划把Swift语言系统学习一下,然后将MagViewer用这种新语言重构一次,并且优化一下,这里记录一下Swift的学习笔记. Swift和Objective-C相比,在语法和书写形式上做了很多 ...
- 记录:swift学习笔记1-2
swift还在不断的更新做细微的调整,都说早起的鸟儿有虫吃,那么我们早点出发吧,趁着国内绝大多数的coder们还没有开始大范围普遍应用. 网上有些大神说:swift很简单!我不同意这个观点,假如你用h ...
- Swift学习笔记(14)--方法
1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...
随机推荐
- weex开发前配置
weex 环境配置:win10 node java git weex-toolkit :npm install weex-toolkit -g在安装weex-toolkit的时候,尽量不要使用cnpm ...
- jQuery,遍历表格每个单元格数据。
<table class="table table-hover table-bordered"> <thead> <tr> <th > ...
- CAD设置水印
主要用到函数说明: _DMxDrawX::Watermark 设置控件水印图片显示,字符串用逗号隔开,分为: “文件名,透明度,x方向距离,y方向距离,是否居中”, 是否居中0代表在上角定位,1表示自 ...
- 批量生成随机字符串并保存到excel
需要导入jxl.jar,commons-lang-2.6.jar 链接:https://pan.baidu.com/s/1NPPh24XWxkka68x2JQYlYA 提取码:jvj3 链接:http ...
- CodeForces 【20C】Dijkstra?
解题思路 heap+Dijkstra就能过.注意边是双向边,要用long long. 附上代码 #include <iostream> #include <queue> #in ...
- Linux之sed:删除某行以及替换
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed ...
- 爬虫之Re库
一.常见匹配模式 \W # 匹配字母数字及下划线 \W # 匹配非字母数字下划线 \s # 匹配任意空白字符,等价于[\t\n\r\f] \S # 匹配任意非空字符 \d # 匹配任意数字,等价于[0 ...
- HTML-js 压缩上传的图片方法(默认上传的是file文件)
//压缩图片方法 function compressImg(file,callback){ var src; var fileSize = parseFloat(parseInt(file['size ...
- PAT 1122 Hamiltonian Cycle
The "Hamilton cycle problem" is to find a simple cycle that contains every vertex in a gra ...
- 在此计算机中仅有部分visual studio2010产品已升级到SP1,只有全部升级,产品才能正常运行
先说废话: 本人机子刚装系统Win10 专业版 1709 开始安装vs2010的时候中途报错了,有一个什么驱动不兼容,被我给关闭了,继续安装完,然后找不到vs的启动快捷方式,开始里面没有,于是我开始修 ...