A Swift Tour(3) - Functions and Closures
Functions and Closures
使用func来声明函数,通过括号参数列表的方式来调用函数,用 --> 来分割函数的返回类型,参数名和类型,例如:
func greet(name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
greet("Bob", day: "Tuesday") //这是swift文档中的调用方法,但是我在xcode6中编写的时候总报错,所以采用了下面的方式
greet("Bob", day: "Tuesday") //使用这种方式不会错误
使用一个元组一个函数可以返回多个值
func getGasPrices() -> (Double,Double,Double)
{
return (3.97,3.59,3.79)
}
getGasPrices()
上面的方法我不知道用什么来接收返回的值,请高手支招
func 的参数也是可变的,可以把多个参数放在一个数组中
func sumOf(sumbers:Int...) -> Int
{
var sum =
for number in sumbers
{
sum += number
}
return sum
} println(sumOf()) //return 0
println(sumOf(, , )) //return 651
函数可以嵌套,嵌套的函数可以访问在外部函数中声明的变量,你可以使用嵌套函数来解决复杂的逻辑:
func returnFifteen() -> Int
{
var y =
func add()
{
y +=
}
add()
return y;
} println(returnFifteen()) //return 15
函数是一个 first-class 类型,这意味着函数的返回值可以是另一个函数:
func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int {
return + number
}
return addOne
}
var increment = makeIncrementer()
increment()
//上面的代码一直报错,不知道什么原因
//错误:Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
//如果哪位高手知道,请指教
一个函数可以作为另一个函数作为其参数
func hasAnyMatches(list: Int[],condition: Int-> Bool) -> Bool
{
for item in list
{
if(condition(item))
{
return true
}
}
return false
} func lessThanTen(number: Int) -> Bool
{
return number < ;
} var numbers = [,,,]
let temp = hasAnyMatches(numbers, lessThanTen)
println(temp) //这个和上面一样的错,也有事我的xcode6 有问题
你可以通过{}来些一个闭包
numbers.map({
(number: Int) -> Int in
let result = * number
return result
})
这个闭包有的时候可以写的更加简洁,比如你知道他的返回类型或者其他的
numbers.map({ number in * number })
sort([, , , , ]) { $ > $ }
上面的闭包 没搞明白。。。
A Swift Tour(3) - Functions and Closures的更多相关文章
- 【读书笔记】A Swift Tour
素材:A Swift Tour 推荐下载Playground:Download Playground objc 自己较为熟悉,想熟悉下风头正劲的 swift.就先从官方的入门手册开始撸. 每一小节,我 ...
- Swift学习——A Swift Tour 函数
Functions and Closures 函数和封闭性(闭包) Functions 函数的使用 Swift中的函数定义和OC中有明显的差别了,使用func定义函数,在括号里定义參数和类型,用 ...
- functions and closures are reference types-函数和闭包是引用类型
Closures Are Reference Types In the example above, incrementBySeven and incrementByTen are constants ...
- Swift Tour 随笔总结 (4)
Switch的一个例子: let vegetable = "red pepper" switch vegetable { case "celery": let ...
- The Swift Programming Language-官方教程精译Swift(8)闭包 -- Closures
闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包可以捕获和存储其 ...
- A Tour of Go Function closures
Go functions may be closures. A closure is a function value that references variables from outside i ...
- 冷市攻略:Listo 教你 25 今天的社会 Swift 语言 - 02 Swift Tour
import Foundation //******************************************************************************** ...
- 【Swift】 - 函数(Functions)总结 - 比较 与 C# 的异同
1.0 函数的定义与调用( Defining and Calling Functions ) 习惯了C#了语法,看到下面的这样定义输入参数实在感到非常别扭,func 有点 Javascript的感觉, ...
- [IOS]《A Swift Tour》翻译(一)
以下翻译内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3768936.html 碎碎念... Swift是苹果在WWDC刚发 ...
随机推荐
- Linux上构建一个RADIUS服务器详解
作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息.但是网络设备通常只支持有限的用户管理功能.学习如何使用Linux上的一个外部RADIUS服务器来验证用户,具体来说是通过一个 ...
- nginx优化之请求直接返回json数据
对于有些服务端接口返回是固定值的json,可通过配置nginx直接返回json,减少程序的加载对资源的占用,减少接口响应时间 location ~* (request/update)$ { d ...
- 安装tcpreplay时报错:configure: error: libdnet not found
安装tcpreplay时报错configure: error: libdnet not found 解决方法: 下载包libdnet-1.8.tar.gz并安装,依次执行: ./configure m ...
- 现在再开发一个CMS系统还有市场吗?
现在几个老的开源cms系统phpcms.dedecms 基本都不维护了,大量漏洞没人修补.后台难看无比.有没有必要开发一套新的cms系统.还有这个需求吗?大家说说.
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...
- 【Java基础】Java接口的总结
什么是接口 接口和抽象类很相似,也是一种抽象的概念,用Interface关键字来修饰.那有了抽象类为啥还要有个接口呢,既然都是抽象的,要一个不就可以了吗?其实不是这样的,抽象类是对一类事物共性的一种抽 ...
- DevExpress的GridControl控件更新數據問題解決辦法
開發WPF程序時,使用Devexpress的GridControl控件用ItemSource綁定數據,在頁面進行編輯時,當屬性繼承INotifyPropertyChanged接口時會同步更新後臺數據. ...
- storm的设计思想
storm的设计思想 在 Storm 中也有对流(Stream)的抽象,流是一个不间断的.无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组).Storm 认为每 ...
- php tcp socket 学习汇总
推荐实例:PHP socket 深入浅出讲解:php的socket通信 基于socket.io的实时消息推送 php socket通信(tcp/udp) PHP向socket服务器收发数据 php实现 ...
- poj 2117 Electricity【点双连通求删除点后最多的bcc数】
Electricity Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4727 Accepted: 1561 Descr ...