iOS-swift-函数和闭包

一、函数

关键字:func

参数列表用 , 分割

使用 -> 分割参数和返回值

1     func greet(person: String, day: String) -> String {
2         return "Hello \(person), today is \(day)."
3     }
4     greet(person: "Bob", day: "Tuesday")

在参数名前面加 _ 表示隐藏参数标签,也可以添加参数名。

1     func greet(_ person: String, on day: String) -> String {
2         return "Hello \(person), today is \(day)."
3     }
4     greet("John", on: "Wednesday")

使用元组(tuple)构建复合类型值。比如一个函数返回多个值。元组的元素可以通过名字或者下标获取。

 1     func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {
 2         var min = scores[0]
 3         var max = scores[0]
 4         var sum = 0
 5
 6         for score in scores {
 7             if score > max {
 8                 max = score
 9             } else if score < min {
10                 min = score
11             }
12             sum += score
13         }
14
15         return (min, max, sum)
16     }
17     let statistics = calculateStatistics(scores: [5, 3, 100, 3, 9])
18     print(statistics.sum)
19     print(statistics.2)

函数可以使用变化的参数,这些参数将会放进数组里面。

1     func sumOf(numbers: Int...) -> Int {
2         var sum = 0
3         for number in numbers {
4             sum += number
5         }
6         return sum
7     }
8     sumOf()
9     sumOf(numbers: 42, 597, 12)

函数里面可以嵌套函数。

1     func returnFifteen() -> Int {
2         var y = 10
3         func add() {
4             y += 5
5         }
6         add()
7         return y
8     }
9     returnFifteen()

函数可以作为另一个函数的类型

1     func makeIncrementer() -> ((Int) -> Int) {
2         func addOne(number: Int) -> Int {
3             return 1 + number
4         }
5         return addOne
6     }
7     var increment = makeIncrementer()
8     increment(7)

函数可以作为另一个函数的参数

 1     func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {
 2         for item in list {
 3             if condition(item) {
 4                 return true
 5             }
 6         }
 7         return false
 8     }
 9     func lessThanTen(number: Int) -> Bool {
10         return number < 10
11     }
12     var numbers = [20, 19, 7, 12]
13     hasAnyMatches(list: numbers, condition: lessThanTen)

二、闭包(closures)    函数是闭包的的一种特殊情况:代码块延时调用。

可以用大括号 {} 写一个闭包。 使用 "in" 把闭包参数和返回值从闭包体区分开来。

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

可以更简单,功能一样。

    let mappedNumbers = numbers.map({ number in 3 * number })
    print(mappedNumbers)

可以使用数值下标代替名字访问参数,这个对于简短的闭包很有用。

当一个闭包是函数的唯一参数,可以省略圆括号。

    let sortedNumbers = numbers.sorted { $0 > $1 }
    print(sortedNumbers)

嗯,努力!

时间: 2024-10-29 02:55:52

iOS-swift-函数和闭包的相关文章

Swift函数和闭包

函数 Swift 使用func关键字声明函数: 1 func greet (name: String, day: String) -> String { 2 return "Hello \(name), today is \(day)." 3 } 4 greet ("Bob", "Tuesday") 通过元组(Tuple)返回多个值: 1 func getGasPrices () -> (Double, Double, Double)

Swift函数与闭包

1.Swfit语法中使用func关键字来申明函数 func sayHi(){ println("Hi !") } 结果显示:Hi ! 2.带参数和返回值函数,参数为String,返回值为String的函数 func sayHiToPerson(personName:String) ->String{ return "Hi ! " + personName; } println(sayHiToPerson("Girl")) 结果显示:Hi !

IOS开发语言Swift入门连载---闭包

IOS开发语言Swift入门连载-闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.Swift 会为您管理在捕获过程中涉及到的所有内存操作. 注意: 如果您不熟悉捕获(capturing)这个概念也不用担心,您可以在 值捕获 章节对其进行详细了

4 .Swift函数|闭包

在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Swift中函数的表现形式如下: 1. func 函数名(参数名1:参数类型,参数名2,参数类型)->返回值类型 {函数的实现部分} func sayHello()->Void { print("hello world") } //有参数,有返回值, func sayHello2(

Swift:函数和闭包

函数 函数是一个完成独立任务的代码块,Swift中的函数不仅可以像C语言中的函数一样有函数的参数和返回值,而且还支持嵌套,并且有函数参数默认值.可变参数等. 1 //定义一个函数,注意参数和返回值,如果没有返回值可以不写返回值或者写成Void.空元组()(注意Void的本质就是空元组) 2 func sum(num1:Int,num2:Int)->Int{ 3 return num1 + num2 4 } 5 6 sum(1, 2) 可以看到Swift中的函数仅仅表示形式有所区别(定义类似于Ja

窥探Swift之函数与闭包的应用实例

今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实例中回类比一下Objective-C中的函数的写法等等.Swift中的函数还是有许多好用的特性的,比如输入参数,使用元组返回多个值, 定义形参名,设定默认参数以及可变参数等等一些好用的特性.而在Swift中的闭包就是Objective-C中的Block, 除了语法不通外,两者的用法是一样的.废话少说

Swift函数闭包

一.闭包的概念 计算机语言要支持闭包的前提条件有2个: 1.支持函数类型,能够将函数作为参数或返回值传递: 2.支持函数嵌套 示例: func caculate(opr : String)->(Int,Int)->Int { var result:(Int,Int)->Int switch(opr){ case "+": result={(a:Int,b:Int)->Int in return a+b } default: result = {(a:Int,b:

Swift 1.1语言第7章 函数和闭包

Swift 1.1语言第7章  函数和闭包 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护.为 了解决这个问题,人们提出了函数这一概念.使用函数可以将特定功能的代码封装,然后在很多的地方进行使用.本章将会讲解函数和闭包的相关内容.本文选自<Swift 1.1语言快速入门> 7.1  函数介绍 函数是执行特定任务的代码块.使用函数会给开发这带来很多的好处.以下总结了其中两点. 1.结构鲜明,便于理解 如果在一

Swift中文教程(四)--函数与闭包

原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: 1 func greet(name: String, day: String) -> String { 2 return "Hello \(name), today is \(day)." 3 } 4 greet("Bob", "Tuesday")

swift基础语法三(函数与闭包)

1 // Playground - noun: a place where people can play 2 3 import Cocoa 4 //函数和闭包 5 6 //函数,使用func关键字声明函数: 7 func greet(name:String, day:String) -> String { 8 return "Hello \(name), today is \(day)." 9 } 10 greet("Bob", "Tuesday&