当前位置: 首页 > news >正文

iOS开发Swift-函数

1.函数的定义和调用

func greet(person: String) -> String {
//    函数名   传入值   传入值类型  返回值类型let greeting = "Hello" + personreturn greeting
}
print( greet(person: "Anna") )   //调用

2.函数的参数与返回值

 (1)无参函数

func sayHello() -> String {return "hello!"
}
print( sayHello() )

(2)多参函数

func greet(person: String, alreadyGreeted: Bool) -> String {if alreadyGreeted {return greetAgain(person: person)}else {return greet(personn: person)}
}

(3)无返回值

func greet(person: String) {print("Hello, \(person)")
}
greet(person: "Dave")

(4)多重返回值

func minMax(array: [Int]) -> (min: Int, max: Int) {//业务代码return (a, b)
}

(5)可选元组返回类型(元组可以是nil)

func minMax(array: [Int]) -> (min: Int, max: Int)? {//业务代码return (a, b)
}

(6)隐式返回的函数

func greeting(for person: String) -> String {"Hello " + person
}
print(greeting(for: "Dave")

任一可以被写成一行return的函数,return(x) + for。

调用的时候: 方法名(for: 参数)

3.参数标签和参数名称

(1)指定参数标签

func greet(from hometown: String) -> String {return "from \(hometown)."
}
print( greet(from: "Beijing") )

(2)忽略参数标签

func some(_ a: Int, b: Int) {//代码
}
som(1, b: 2)

(3)默认参数值

func some(a: Int, b: Int = 12) {//代码
}
some(a: 3, b: 6)   //b用6
some(a: 3)   //b用12

(4)可变参数

一个可变参数可接受0个或多个值。

func arith(_ numbers: Double ...) -> {//代码
}
arith(1, 2, 3, 4, 5)

(5)输入输出参数(&)

函数参数默认为常量,不可修改。如果要修改,则要把参数设置为输入输出参数。

func swap(_a: inout Int, _b: inout Int) {//代码
}
swap(&5, &7)

4.函数类型

//类型: (Int, Int) -> Int
func add(_ a: Int, _ b: Int) -> Int {return a + b
}
//类型: () -> Void
func printHello() {print("H")
}

 (1)使用函数类型

var 变量: (Int, Int) -> Int = add
变量(2, 3)    //调用

(2)函数类型作为参数类型

func printMath(_ mathFunction: (Int, Int) -> Int, a: Int, b: Int) {print( mathFunction(a, b) )
}
printMath(add, 3, 5)

(3)函数类型作为返回类型

func choose(back: Bool) -> (Int) -> Int{return add
}
let move = choose(back: true)

5.嵌套函数

把函数定义到别的函数体中,对外界不可见,但可以被他们的外围函数调用。

func addMul(a: Int, b: Int, c: Int) -> Int {func add(d: Int, e: Int) -> Int { return d + e }func mul(f: Int, g: Int) -> Int { return f * g }return mul(a, add(b, c))
}
print(addMul(1, 2, 3))
http://www.lryc.cn/news/142123.html

相关文章:

  • 序列化协议:JSON和XML
  • 江西萍乡能源石油化工阀门三维扫描3d测量抄数建模-CASAIM中科广电
  • Go【gin和gorm框架】实现紧急事件登记的接口
  • 第一个VUE程序?
  • 电阻器件的分类
  • QT基础教程之二 第一个Qt小程序
  • Edge用户数据目录查找
  • 最新外卖霸王餐小程序、H5、微信公众号版外卖系统源码|霸王餐美团/饿了么系统/外卖红包cps粉丝裂变玩法源码下载
  • 数据库事务四大特性
  • 浅谈Router和Route
  • Linux环境安装jdk
  • 数据隐私与安全在大数据时代的挑战与应对
  • vue3 基础知识 (生命周期) 06
  • 【Eclipse】汉化简体中文教程(官方汉化包,IDE自带软件安装功能),图文详情
  • Kotlin协程flow的debounce参数timeoutMillis特性
  • oracle 12c怎样修改varchar2允许的最大长度
  • python WSGI和ASGI的区别
  • 【Golang】什么是内存逃逸?
  • MVC OR DDD
  • 前端面试:【TypeScript】静态类型检查与编译时类型检查
  • Qt中设置QListWidget滑动条滚动速度
  • STM32的lorawan协议栈
  • IC芯片 trustzone学习
  • Day19-异步请求-axios文件上传
  • 从零学算法79
  • ctfshow-web-红包题第六弹
  • 蓝蓝设计UI设计公司-界面设计与开发案例
  • IDEA 配置注释模板
  • Kuka机器人设计通用码垛程序
  • pandas由入门到精通-数据清洗-扩展数据类型