Swift 3.0 函数(Function)
来源:互联网 发布:最新备案域名查询 编辑:程序博客网 时间:2024/06/04 23:27
一、函数定义及分类
1、语法格式:
func 函数名(参数列表) -> 返回值类型 { }
2、无参数无返回值
func println(){ print("Hello Swift 3.0");}//Hello Swift 3.0
3、有参数无返回值
func println(version:String){ print("Hello Swift "+version);}println(version:"3.0");// Hello Swift 3.0
4、无参数有返回值
func returnMessage() -> String{ return "Hello Swift 3.0";}let message = returnMessage();print(message);//Hello Swift 3.0
5、有参数有返回值
func introduce(name:String,age:Int) -> String{ return "my name is \(name),my age is \(age)";}let put = introduce(name: "jack", age: 24);print(put);//my name is jack,my age is 24
关于返回值: 返回值可以被忽略(用”_”忽略返回值),但定义了有返回值的函数必须返回一个值,如果在函数定义底部没有返回任何值,将导致编译时错误。
二、函数的返回值
1、多重返回值(返回值类型:元组)
func minAndMax(array:[Int])->(min:Int,max:Int){ var min = array[0]; var max = array[0]; for (_,value) in array.enumerated() { if value < min { min = value; } if value > max { max = value; } } return(min,max);}let arrays:[Int] = [45,13,78,4,98,45];let touples = minAndMax(array: arrays);print(touples);//(4, 98)//print(touples.min,touples.max);
注意 :
(1)元组的成员不需要在元组从函数中返回时命名,因为它们的名字已经在函数返回类型中指定了
(2) 如果我传入的数组为空,那么可能,上面的函数取出数组的值就可能会报错 ? 那么如何处理呢?判断数组是否为空,其次,如果数组为空,并且当数组为空时返回 nil。那么返回的元组就是可选类型的
func getMinxAndMax(arrays:[Int]) ->(max:Int,min:Int)?{ if arrays.isEmpty { return nil; } var currentMin = arrays[0]; var currentMax = arrays[0]; for (_,value) in arrays.enumerated() { if value < currentMin { currentMin = value; } if value > currentMax { currentMax = value; } } return(currentMax,currentMin);}let array:[Int] = [];// 可选值解绑if let touples = getMinxAndMax(arrays: array){ print(touples.max,touples.min);}//let touples = getMinxAndMax(arrays: array) ?? (0,0);//print(touples.max,touples.min);
三、函数的默认参数值
你可以在函数体中通过给参数赋值来为任意一个参数定义默认值(Deafult Value)。当默认值被定义后,调用这个函数时可以忽略这个参数。
func mySelf(name:String,version:Double = 3.0) ->String{ return name + " version is " + "\(version)";}print(mySelf(name: "Swift"));print(mySelf(name: "Swift", version: 3.0));/*Swift version is 3.0Swift version is 3.0*/
四、可变参数
一个可变参数(variadic parameter)可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数可以被传入不确定数量的输入值。通过在变量类型名后面加入(…)的方式来定义可变参数。
func getAverage(_ numbers:Double...) ->Double{ // var sum:Double = 0.0; for value in numbers { sum += value; } return sum / Double(numbers.count);}let average1 = getAverage(1,2,3,4,5);print(average1);//3.0let average2 = getAverage(1,2,4);print(average2);//2.33333333333333
注意: 是同类型,数量不确定(可多可少) “_” 可以忽略参数名。
五、输入输出参数(inout)
如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数,定义一个输入输出参数时,在参数定义前加 inout 关键字。(Swift是值类型)
var x = 2;var y = 5;func swap(a:inout Int ,b:inout Int){ let temp = a; a = b; b = temp;}swap(&x, &y);print(x,y);// 5 2
六、函数类型
1、什么是函数类型?
每个函数都有种特定的函数类型,函数的类型由函数的参数类型和返回类型组成
func addTwoNumber(a:Int,b:Int) -> Int{ return a+b;}// 函数类型 (Int,Int) -> Int
定义一个叫做 mathFunction 的变量,类型是‘一个有两个 Int 型的参数并返回一个 Int 型的值的函数’,并让这个新变量指向 addTwoInts 函数”。
var typeFunction:(Int,Int) -> Int = addTwoNumber;print(typeFunction(5,6));// 11
2、如何使用函数类型
2.1 函数类型作为参数类型
func printMathResult(typeFunction:(Int,Int) -> Int,a:Int,b:Int){ print(typeFunction(a,b));}printMathResult(typeFunction: addTwoNumber,a: 5,b: 8);//13
2.2 函数类型作为返回值类型
func stepForward(_ input: Int) -> Int { return input + 1}func stepBackward(_ input: Int) -> Int { return input - 1}func chooseStepFunction(backward: Bool) -> (Int) -> Int { return backward ? stepBackward : stepForward;}var currentValue = 3;// 此刻, moveToZero指向 stepBackwardlet moveToZero = chooseStepFunction(backward: currentValue > 0);while currentValue != 0{ print("\(currentValue)...") currentValue = moveToZero(currentValue);}print("zero");/*3...2...1...zero*/
七、函数嵌套
将上面的函数修改成
func chooseStepFunction(backward: Bool) -> (Int) -> Int { func stepForward(input: Int) -> Int { return input + 1 } func stepBackward(input: Int) -> Int { return input - 1 } return backward ? stepBackward : stepForward}
- Swift 3.0 函数(Function)
- Swift Function函数
- Swift-函数(Function)
- Swift Function函数
- Swift学习笔记6——函数(Function)
- 存储函数(FUNCTION)
- PowerShell 函数(Function)
- 7.函数(function)
- Swift 3.0 -函数
- Swift(1)函数
- Swift 函数(Functions)
- Swift Function & Closure
- Swift中的Function
- swift-function用法
- 【Swift初见】Swift函数(一)
- 【Swift初见】Swift函数(二)
- 函数指针(Function Pointers)
- 函数模板(Function Template)
- dubbo-admin管理中心的搭建
- DHTML技术演示---动态设置页面文字样式
- 快节奏多人在线游戏网络入门系列教程(2):客户端预测与服务器协调
- Easy-44
- TCP与SOCKET的三次握手的对应关系
- Swift 3.0 函数(Function)
- Tensorflow 损失函数定义
- 用maven创建多模块项目
- 响应式的实例
- 多重继承的内存分配
- 面试(三) 网络
- Linux nc命令详解
- 在一个Activity(Activity B)中如何关闭另一个Activity(Activity A)?
- 高并发下的数据库设计水平分区之二篇