Object-C--->Swift之(六)函数类型

简介:

认识函数类型

每个函数都有特定的函数类型

函数类型是由函数的形参类型、->和返回值类型组成。

例如:
    func Add(a:Int,b:Int){
    ...
    }
该函数的函数类型为(Int,Int)->Void或者(Int,Int)->()
func Add()->Int{
   ...
}
该函数的函数类型为()->Int
func Add(){
    ...
}
该函数的函数类型为()->()或者()->Void

func Add(a:Int,b:Int)->Int{
    ...
}

  该函数的函数类型为(Int,Int)->Int

使用函数类型

定义变量

定义变量,其类型为(Int,Int)->Int
 var myadd:(Int,Int)->Int
func Add(a:Int,b:Int)->Int{
    return a+b
}
myadd=Add
   print(myadd(3,4))
   //输出7


当函数类型和我们定义的变量类型一致的时候我们就能够赋值成功。

函数类型作为形参类型

有些时候我们写一个函数,这个函数的大部分逻辑是十分确定的,但某些处理逻辑是无法确定的需要根据具体情况进行动态的改变。这个时候我们可以在函数中定义函数类型的形参,这样在调用该函数的时候传入不同的函数作为参数,从而动态的改变函数的功能。

   func add(var a:Int,var b:Int,fn:(Int)->Int)->Int
    {
   return a+fn(b)
     }
    //不对b进行改变
   funcOnlyb(val :Int)->Int
    {
   return b;
     }
//对b进行平方改变
   func square(val:Int)->Int
{
    return b*b
 }
    对b进行立方改变
func cube (val:Int)->Int
   {
      return b*b*b
    }
    print(add(3,4,fn:Onlyb))//输出7
   prin(add(3,4,fn:square))//输出19
   print(add(3,4,fn:cube))//输出67

分析代码:我们在上面程序中,有两个变量的值是不变的,但对第二个变量进行变化是动态的,可能需要平方操作或者立方操作,也可能不需要任何操作。

使用函数类型作为返回值类型
   func squar (val:Int)->Int
   {
    return  val*val
    }
   func cube (val:Int)->Int
    {
     return  val*val*val
    }
   func Onlyb (val:Int)Int
   {
    return b
    }
  //注意返回值类型为(Int)->Int
    func Math(#type:String)->(Int)->Int
   {
     switch(type)
  {
   case"square":
    return square
    case "Onlyb":
    returnOnlyb
    case "cube":
   return cube
   default:
    print("输入函数错误呀")
  }
     var math=Math(type:"cube")
    print(math(5))//输出125
    }
目录
相关文章
|
16天前
|
Swift 索引 容器
Swift 泛型-扩展泛型类型
Swift 泛型-扩展泛型类型
22 2
|
16天前
|
Swift 索引
Swift 泛型-类型约束
Swift 泛型-类型约束
23 1
|
22天前
|
安全 编译器 Swift
Swift 函数
10月更文挑战第27天
13 1
|
25天前
|
安全 Swift iOS开发
Swift 可选(Optionals)类型
10月更文挑战第24天
36 2
|
1月前
|
Python
通过 type 和 object 之间的关联,进一步分析类型对象
通过 type 和 object 之间的关联,进一步分析类型对象
56 3
|
6月前
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
69 1
|
2月前
|
存储 PHP 数据安全/隐私保护
spl_object_hash() 函数
spl_object_hash() 函数
|
3月前
|
存储 关系型数据库 MySQL
|
4月前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
73 7
|
4月前
|
SQL 安全 Java
Android经典面试题之Kotlin中object关键字实现的是什么类型的单例模式?原理是什么?怎么实现双重检验锁单例模式?
Kotlin 单例模式概览 在 Kotlin 中,`object` 关键字轻松实现单例,提供线程安全的“饿汉式”单例。例如: 要延迟初始化,可使用 `companion object` 和 `lazy` 委托: 对于参数化的线程安全单例,结合 `@Volatile` 和 `synchronized`
65 6