Swift学习——A Swift Tour 函数

Functions and Closures  函数和封闭性(闭包)

Functions  函数的使用

Swift中的函数定义和OC中有明显的差别了,使用func定义函数,在括号里定义參数和类型,用 -> 定义返回值类型

func greet(name: String, day: String) -> String {
    return "Hello \(name), today is \(day)."
}
greet("Bob", "Tuesday")

使用一个元组 ()用来返回多个返回值

func getGasPrices() -> (Double, Double, Double) {
    return (3.59, 3.69, 3.79)
}
getGasPrices()

函数还能够有可变数量的參数(一般这样的情况传进去个数组就好吧),注意是三个点哦  ...

func sumOf(numbers: Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}
sumOf()
sumOf(42, 597, 12)

函数还能够进行嵌套,嵌套的函数能够訪问外部函数的变量

func returnFifteen() -> Int {
    var y = 10
    func add() {
        y += 5
    }
    add()
    return y
}
returnFifteen()

新特性:Swift定义了函数也是一种类型,也即是说能够定义一个函数变量,某个函数的返回值能够是一个函数

func makeIncrementer() -> (Int -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number
    }
    return addOne
}
var increment = makeIncrementer()
increment(7)

函数能够将另外一个函数作为它的一个參数

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 < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)

Closures  闭包的使用

函数事实上是闭包的一种情况,你能够定义一个没有名字的闭包,仅仅须要用大括号 { } 将闭包含起来,使用  in 来划分变量和返回值 (事实上功能就类似OC中的Block)

numbers.map({
    (number: Int) -> Int in
    let result = 3 * number
    return result
    })

你能够省略參数类型和返回值让上面的闭包更加简单介绍,仅仅有一条语句的闭包直接返回这条语句运行的结果

numbers.map({ number in 3 * number })

你还能够在括号后面写闭包

sort([1, 5, 3, 12, 2]) { $0 > $1 }

下一节我们说说对象和类

Swift学习——A Swift Tour 函数,布布扣,bubuko.com

时间: 2024-12-24 12:45:04

Swift学习——A Swift Tour 函数的相关文章

Swift学习——A Swift Tour 枚举和结构体

Enumerations and Structures Enumerations   枚举的使用 使用 enum 定义一个枚举,枚举里面可以关联方法,比如下文中的描述方法 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { ca

Swift学习——A Swift Tour 对象和类

Objects and Classes  对象和类 使用关键字 class 定义一个类,在定义类的属性的时候与常量或者变量的定义相同(继承父类的属性定义不同),方法和函数的定义也相同 class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } } 使用 ()来声明类的实例,使用点 . 语法来获取类的属

Swift学习——A Swift Tour 协议和扩展

Protocols and Extensions Protocols  协议的使用 使用关键字 protocol 定义一个协议 protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() } 类,枚举和结构体都可以实现协议 class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very sim

【Swift学习】Swift编程之旅---闭包(十一)

闭包是可以在代码中被传递和使用的自包含功能模块,它很像c和oc中的block,和.net中的lambdasbas表达式. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 包裹着这些常量和变量的包俗称闭包.Swift会为您管理在捕获过程中涉及到的内存操作.下面是闭包的3中表现形式 全局函数是一个有名字但不会捕获任何值的闭包 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的没有名字的闭包 Swift的闭包表达式拥有简洁

swift学习笔记之—自定义函数的规则说明

原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_517.html 1,无返回值的函数 func test(name:String){ } 2,返回一个返回值 func test(name:String) -> Bool{ return true } 3,返回由多个值组成的复合返回值 func test(name:String) -> (Int,Bool){ var position = 1 var v

【Swift学习】Swift编程之旅(三)

元组(tuples) tuples是将多个单一的值组合为一个复合的值.它可以包含任何类型的值,而不需要都是相同类型. 一.元组的创建 1. let http404error = (404,"NOT FOUND!") let (statusCode, statusMessage) = http404error print("The status code is \(statusCode),the status message is \(statusMessage)")

【Swift学习】Swift编程之旅(一)

学习一门新语言最经典的例子就是输出“Hello World!” print("Hello World!") swift就是这样来输出的. 如果你使用过其他语言,那么看上去是非常的熟悉吧.但比一些c要简单的多吧 1.不需要导入一些单独的库,比如输入/输出或字符串处理功能的类库, 2.不需要在全局范围内编写的代码用于作为入口点程序,所以你不需要 main()函数, 3.不需要写在每个语句的末尾的分号.这样写是不是很简单~ 简单值 使用let来声明一个常量,var声明一个变量.一个常量值在编

Swift 学习 用 swift 调用 oc

开发过程中 很可能  把swift不成熟的地方用成熟的oc 代码来弥补一下 , 下面简单来学习一下,我也是照着视频 学习的 卖弄谈不上 就是一次学习笔记, 具体问题还是具体分析吧. 需求 给展出出来的的图片 添加触摸点击响应事件 实施方式:把这个 有触摸事件的UIImageView(OFImageView) 用 OC 写成一个对象  然后用swift 去调用 1,第一次创建 OFImageView  时候 会生成一个XXXX-Bridging-Header.h 文件  查了好多资料解释说 这个

【Swift学习】Swift编程之旅---ARC(二十)

Swift使用自动引用计数(ARC)来跟踪并管理应用使用的内存.大部分情况下,这意味着在Swift语言中,内存管理"仍然工作",不需要自己去考虑内存管理的事情.当实例不再被使用时,ARC会自动释放这些类的实例所占用的内存.然而,在少数情况下,为了自动的管理内存空间,ARC需要了解关于你的代码片段之间关系的更多信息.本章描述了这些情况,并向大家展示如何打开ARC来管理应用的所有内存空间. 注意:引用计数只应用在类的实例.结构体(Structure)和枚举类型是值类型,并非引用类型,不是以