函数 function
var str = "Hello,playground"// 定义函数 func 关键字func printStr (){ print(str)}
// 调用函数,函数名+()printstr()
有参数有返回值的函数
// 传入一个字符串,返回字符串的字符的个数// 函数的声明 + (参数名:参数类型)->(返回值类型)// str 即是外部参数,也是内部参数func lenthOfString(str:String)->(Int){ return str.characters.count}let len = lenthOfString(str: "zhangsan")print(len)
多参函数
// 求和函数func sum(a:Int,b:Int)->(Int){ return a + b}print(sum(a:5,b:6))
利用元组实现多返回值
func minAndMac(a:Int,b:Int)->(min:Int,max:Int){ let min = a < b ? a : b let max = a > b ? a : b return(min,max)}print(minAndMac(a: 10,b: 20))
可选类型作为参数或者返回值
func maxAndmin(a :Int?,b:Int?)->(max:Int,min:Int)?{ // 输入的参数为可选类型,所以用值绑定来接收一下输入的值,如果输入的值不为空,就将输入的值强制解包,并执行下面的代码 if let a = a,let b = b { let max = a > b ? a : b let min = a < b ? a : b return (max,min) } // 如果输入的值为空,则不进行比较,直接返回 return nil} // 返回值也有可能为空,进行只绑定,如果返回值不为空,就将返回值强制解包,并执行下面括号中的代码,如果为空就直接执行 else 中的代码let result = maxAndmin(a: 20,b: nil )if let result = result{ print(result)}else{ print("返回值为空")}
参数标签
// 参数标签 是放在参数名前面的另一个参数名作为参数标签,这个标签相当于外部参数名func printname2(yourname name: String){ print(name)}printname2(yourname: "zhangsan")// 不制定参数标签的时候,参数名就默认为参数标签func printname1(name: String){ print(name)}printname1(name: "lisi") //// 参数名前面加_来忽略外部参数名,即:忽略参数标签func printname3(_ name: String){ print(name)}printname3("lisi")
新特性,默认参数值
func sayhello(name: String = "wangxiao"){ print("name =\(name)")}// 传入值的时候,就打印传入的值sayhello(name:"ceshi")//什么都不传的时候,打印默认值sayhello()
//:## 可变参数 // 是指参数的个数不确定可能是多个参数 // 比如求任意几个数的和func sum(_ numbers:Int...)->Int{ var sum = 0 for number in numbers{ sum += number } return sum}sum(1,3,5,7)print(sum(2,4,6))
输入输出参数 关键字 inout
//:## 参数值修改var a = 23func changeNumber(a:Int){ //error: left sIDe of mutating operator isn't mutable: 'a' is a 'let' constant // 参数默认都是常量 let 修饰的,在函数内部,不能改变函数外部的值,函数内部修改的值,都是值拷贝 var a = a a += 2 print(a)}changeNumber(a: a )print(a) // 比如交换两个变量的值var numbera = 10var numberb = 20func swapNumber(a:inout Int,b:inout Int){ let c = a a = b b = c}swapNumber(a: &numbera,b: &numberb)print("numbera = \(numbera),numberb = \(numberb)" )
函数类型
// 可以将函数当做一种数据类型,或者当做变量//第一个函数func sum3(a :Int,b:Int)->Int{ return a + b}//第二个函数func minus3(a :Int,b:Int)->Int{ return a - b}// 这两个函数有个共同特点,参数都是两个 int 类型参数,返回值也是 int,所以可以定义一个变量代表这个函数类型var hanshuStyle : (Int,Int)-> Int// 这时候,就可以将这种类型的函数,赋值给这个变量了hanshuStyle = sumhanshuStyle(5,5)// 函数类型的变量作为参数func style(a : Int,b:Int,operation: (Int,Int)-> Int )->Int{ return operation(a,b)}style(a: 33,b: 33,operation: sum3)style(a: 33,operation: minus3 )// 函数类型作为返回值func getoperation(key:String)->((Int,Int)->Int){ switch key { case "+": return sum3 default: return minus3 } } //这个时候,函数返回的就是一个加法的函数类型,f 就相当于一个加法的函数 var f = getoperation(key: "+") f(25,23)总结
以上是内存溢出为你收集整理的swift 学习笔记(18)-函数全部内容,希望文章能够帮你解决swift 学习笔记(18)-函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)