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的更多相关文章

  1. 【读书笔记】A Swift Tour

    素材:A Swift Tour 推荐下载Playground:Download Playground objc 自己较为熟悉,想熟悉下风头正劲的 swift.就先从官方的入门手册开始撸. 每一小节,我 ...

  2. Swift学习——A Swift Tour 函数

    Functions and Closures  函数和封闭性(闭包) Functions  函数的使用 Swift中的函数定义和OC中有明显的差别了,使用func定义函数,在括号里定义參数和类型,用 ...

  3. functions and closures are reference types-函数和闭包是引用类型

    Closures Are Reference Types In the example above, incrementBySeven and incrementByTen are constants ...

  4. Swift Tour 随笔总结 (4)

    Switch的一个例子: let vegetable = "red pepper" switch vegetable { case "celery": let ...

  5. The Swift Programming Language-官方教程精译Swift(8)闭包 -- Closures

    闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包可以捕获和存储其 ...

  6. A Tour of Go Function closures

    Go functions may be closures. A closure is a function value that references variables from outside i ...

  7. 冷市攻略:Listo 教你 25 今天的社会 Swift 语言 - 02 Swift Tour

    import Foundation //******************************************************************************** ...

  8. 【Swift】 - 函数(Functions)总结 - 比较 与 C# 的异同

    1.0 函数的定义与调用( Defining and Calling Functions ) 习惯了C#了语法,看到下面的这样定义输入参数实在感到非常别扭,func 有点 Javascript的感觉, ...

  9. [IOS]《A Swift Tour》翻译(一)

    以下翻译内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3768936.html 碎碎念... Swift是苹果在WWDC刚发 ...

随机推荐

  1. mysql 查看死锁和去除死锁

    1.查询是否锁表show OPEN TABLES where In_use > 0; 2.查询进程 show processlist 3.  查询到相对应的进程,然后 kill id 验证(ki ...

  2. Mysql监控工具小集合

    介绍一些常见的Mysql监控工具. Cacti Cacti是 一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.它通过snmpget来获取数据,使用 RRDtool绘 ...

  3. 图文教您轻松学会用PS设计制作名片

    图文教您轻松学会用PS设计制作名片 http://jingyan.baidu.com/article/49711c614e7370fa441b7ca3.html

  4. 【JS】Beginner1:Making Stuff Happen

    1.JS(JavaScript) is for interactivity 2.How does JS relate to HTML&CSS? script tag script elemen ...

  5. Java笔记(十四)……抽象类与接口

    抽象类概念 抽象定义: 抽象就是从多个事物中将共性的,本质的内容抽取出来. 例如:狼和狗共性都是犬科,犬科就是抽象出来的概念. 抽象类: Java中可以定义没有方法体的方法,该方法的具体实现由子类完成 ...

  6. HW3.9

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  7. [读书笔记]算法(Sedgewick著)·第一章(1)

    到家放松放松之后就开始学习算法了,手里拿的是拿的是一本Robert Sedgewick的橙皮书<算法(第四版)>的.这本书与导论那本书的不同之处在于轻数学思想.重实现,也就是说这是一本很不 ...

  8. Powerdesigner设置name与code不同时变化

    Tools-General Options-Dialog Name to Code mirroring去掉对勾

  9. Filter过滤器(1)

    Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ht ...

  10. java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)

    1.自动判断格式并调用相应的转换工具,默认方法 /** * 自动判断格式并调用相应的转换工具,默认方法 * @param srcVideoPath * @param tarVideoPath * @r ...