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
    }
时间: 2024-08-29 01:17:46

Object-C--->Swift之(六)函数类型的相关文章

有关swift函数类型作为返回类型疑惑

问题描述 有关swift函数类型作为返回类型疑惑 func chooseStepFunction (backwards:Bool)->(Int)->Int{ return backwards ? a :b } 我想请问下这里的(Int)->Int 具体是什么意思,小白刚开始学swift不懂 解决方案 参数为Int,返回值为Int的函数, 按照你上面所写, a和b 分别代表一个参数为Int,返回值也为Int的函数 解决方案二: Swift 函数类型作为返回值使用swift 中 函数类型参数

函数类型做参数-Swift函数类型作函数参数与闭包有什么区别?

问题描述 Swift函数类型作函数参数与闭包有什么区别? 各路大神,请指教啊 func printIntNum(add: (Int, Int) -> Int, a: Int, b: Int) { println("num = (add(a,b))") } 这个函数中参数 add该怎么理解,在外部调用时,既可以用一个闭包block直接实现,还可以用另外一个函数去代替,该怎么理解??? 解决方案 这是一件事情的两个说法,函数类型作函数参数,就是把函数作为参数传进去,既可以传匿名函数,

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

6.9 函数类型 Swift语言支持定义函数类型(类似于C语言的函数指针).一个函数类型需要指定下面3个要素. 函数参数个数.函数参数类型.函数返回值.函数类型和其他数据类型的使用方法完全相同,在冒号(:)后面指定类型.定义函数类型时除了不需要指定参数名和函数体外,和函数定义完全相同. 下面的代码定义了两个函数类型变量(fun1和fun2). var fun1: (inout String, Int) -> String var fun2: (String, String...) -> Str

Swift中使用可选类型完美解决占位问题

  这篇文章主要介绍了Swift中使用可选类型完美解决占位问题,本文讲解了为Dictionary增加objectsForKeys函数.Swift中更简便的方法.内嵌可选类型等内容,需要的朋友可以参考下 可选类型是Swift中新引入的,功能很强大.在这篇博文里讨论的,是在Swift里,如何通过可选类型来保证强类型的安全性.作为例子,我们来创建一个Objective-C API的Swift版本,但实际上Swift本身并不需要这样的API. 为Dictionary增加objectsForKeys函数

Swift 中的函数(下)

学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 1 import Foundation 2 3 /***********嵌套函数*************/ 4 func getMathFunc(#type: String) -> (Int) -> Int{ 5 func squre(num:Int) -> Int{ 6 return num*num 7 } 8 func cube(num:

Swift入门篇-基本类型(3)

原文:Swift入门篇-基本类型(3)     一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, -) 说明: 1: 元组变量还是一个变量,只不过表现方式和其他变量不一样2:()括号里面可以放入N个变量组成 例子: import Foundation /* A是元组变量,()里面放着 整形 和字符串 元组类型为 整形和字符串 组成 */ var A = (1,"swift")//元组变量A 由 整形和字符串 组成 println(A) 运行结果 (1, swift)  

Javascript函数类型的判断

在判断函数类型时,我们使用的是typeof方法,比如: function fn(){   //content   }   alert(typeof fn)//结果是"function".  但是,该方法在一些浏览器中并不是像我们想像的那样工作. 1.Firefox2和Firefox3 在这两个浏览器中,用typeof检测HTML对象元素的类型,得到是一个不精确的"function"结果,而不是"object",如HTMLDocument.如: a

Swift入门篇-基本类型(1)

原文:Swift入门篇-基本类型(1)        博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的          今天遇到了一个很烦的事情是,早上10点钟打开电脑,一直都进入系统(我的系统  mac OS X Yosemite 10.10 系统),一直卡在登陆界面上进不去,心里想苹果新系统这么脆弱,现在很多软件不兼容就算了,搞的我还进不了系统,真是郁闷.然后在google 上搜索,google也打不开(真是悲催, 据说"组织" 要开会,大家先不要用g

Swift 中的函数

学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 练习一: 1 import Foundation 2 3 //函数 4 /*1.定义函数的语法格式 5 func 函数名(形参列表) -> 返回值类型 { 6 //可执行语句组成的函数 7 } 8 */ 9 //定义和调用函数 10 func sayHello(personName: String) -> String{ 11 return &quo