《Swift 权威指南》——第6章,第6.9节函数类型

简介:

本节书摘来自异步社区《Swift 权威指南》一书中的第6章,第6.9节函数类型,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.9 函数类型

Swift语言支持定义函数类型(类似于C语言的函数指针)。一个函数类型需要指定下面3个要素。

函数参数个数。
函数参数类型。
函数返回值。
函数类型和其他数据类型的使用方法完全相同,在冒号(:)后面指定类型。定义函数类型时除了不需要指定参数名和函数体外,和函数定义完全相同。

下面的代码定义了两个函数类型变量(fun1和fun2)。

var fun1: (inout String, Int) -> String
var fun2: (String, String...) -> String

我们直接将符合要求的函数赋给对应的函数变量,例如,下面两个函数分别符合fun1和fun2的要求,所以可以直接初始化这两个变量。

func myFun1(inout name:String, age:Int) -> String
{
    return "name:" + name + " age:" + String(age)
}
func myFun2(var header:String, strArray:String...) -> String
{

    for s in strArray
    {
        header += " " + s
    }
    return header
}
//  初始化fun1
fun1 = myFun1
//  初始化fun2
fun2 = myFun2

在调用时可以直接使用函数类型变量。例如,调用fun1和fun2的代码如下。

var name:String = "bill"
println(fun1(&name, 50))
println(fun2("Mike", "a","b"))

函数类型也可以作为函数的参数类型,这样就可以将外部函数传入另一个函数或方法,然后在方法中调用该外部函数了。这样可以很容易实现函数的多态。

//  fun是函数类型参数
func myFun3(fun:(inout String, Int) -> String, str:String)
{
    var name = ""
    println(fun(&name, 40))

}
//  调用myFun3函数,fun1在前面的代码中已经定义了
myFun3(fun1, "hello")

当然,函数的返回值类型也可以是函数类型的,也就是说,函数可以返回另外一个函数。

func method1(n:Int) -> Int
{
    return n*n
}
func method2(n:Int) -> Int
{
    return 2*n
}
//  myFun4的返回值是函数类型((Int) -> Int)
func myFun4(flag:Bool) -> (Int) -> Int
{
    //  根据参数值返回method1或method2
    return flag ? method1:method2
}
println(myFun4(true)(20))
println(myFun4(false)(20))
执行这段代码会输出如下的内容。

400
40
相关文章
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
160 6
|
存储 Swift iOS开发
在Swift编程语言中,集合类型`Set`
在Swift编程语言中,集合类型`Set`
138 2
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
179 1
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
127 1
|
10月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
234 2
|
10月前
|
设计模式 安全 测试技术
Swift代码审查的关键点及最佳实践,涵盖代码风格一致性、变量使用合理性、函数设计、错误处理、性能优化、安全性、代码注释等方面,旨在提升代码质量和项目管理水平
本文深入探讨了Swift代码审查的关键点及最佳实践,涵盖代码风格一致性、变量使用合理性、函数设计、错误处理、性能优化、安全性、代码注释等方面,旨在提升代码质量和项目管理水平。通过实际案例分析,展示了如何有效应用这些原则,确保代码的高可读性、可维护性和可靠性。
229 2
|
10月前
|
Swift 索引 容器
Swift 泛型-扩展泛型类型
Swift 泛型-扩展泛型类型
104 2
|
10月前
|
Swift 索引
Swift 泛型-类型约束
Swift 泛型-类型约束
91 1
|
10月前
|
安全 编译器 Swift
Swift 函数
10月更文挑战第27天
59 1
|
10月前
|
安全 Swift iOS开发
Swift 可选(Optionals)类型
10月更文挑战第24天
80 2

相关课程

更多