swift 学习笔记(18)-函数

swift 学习笔记(18)-函数,第1张

概述函数 function var str = "Hello, playground"// 定义函数 func 关键字func printStr (){ print(str)} // 调用函数,函数名+()printStr() 有参数有返回值的函数 // 传入一个字符串,返回字符串的字符的个数// 函数的声明 + (参数名:参数类型)->(返回值类型)// str 即是外部参数

函数 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)-函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1070047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存