
swift中的函数的功能足够强大。先定义几个简单的函数看看
func printValue(content :String){ print(content)}func sayHello(name :String) ->String{ return "hello,\(name)"}//依次调用上面的两个函数printValue("hello,world")sayHello("kite")参数和返回值
定义一个函数是以func开头,然后是函数名,后面的括号内是参数列表,多个参数之间用英文的逗号隔开。如果函数有返回值,则将返回值的类型写在一个箭头(->)的后面。
外部参数是在调用该函数时需要明确给出的参数名,这样做可以提高代码的可读性。定义外部参数的方式是将外部参数名写在形参的前面,用空格隔开。
func sayHello( toname name :String) ->String{ return "hello,\(name)"}sayHello(toname: "kite")
此时调用sayHello时,需要制定外部参数名。
如果一个函数不止一个参数的话,swift默认会将第二个以及后面的所有参数的形参指定为外部参数名,例如
func add(num1 :Int,num2 :Int) ->Int{ return num1+num2}add(1,num2: 2)func add(num1 :Int,num2 :Int,num3 :Int) ->Int{ return num1+num2+num3}add(1,num2: 2,num3: 3)
如果你不喜欢这种默认的外部参数,也可以在形参前面加上一个下划线,中间用空格隔开,这样就告诉swift我这个参数不需要默认的外部参数。
func add(num1 :Int,_ num2 :Int,_ num3 :Int) ->Int{ return num1+num2+num3}add(1,2,3)参数默认值
swift允许为函数的参数设置默认值,这样的话,调用该函数时可以不提供该参数。设置默认值的方法是在参数的类型后面加上等号并加上默认值。
func sayHello(toname name :String,greetingContent content :String = "hello") ->String{ return content+","+name}print(sayHello(toname: "kite"))print(sayHello(toname: "kite",greetingContent: "hi"))
上面的代码会输出
hello,kitehi,kite可变形参
一个可变形参可以接受0个或多个输入作为函数的参数。传递至可变形参的值在函数主体内是以适当类型的数组存在的。
func add(numbers :Int...) -> Int{ var total = 0 for item in numbers{ total+=item } return total} //参数的数量可以是0个到多个add()add(1,3)add(1,3,4,5)inout参数
正常情况下,当一个值类型的变量被作为形参传递给一个函数时,无论该变量在函数体内如何被复制,这个变量原来的值是不受影响的。如果你希望这个形参的值能够保留,则可以将其定义为inout参数,在形参前面加上inout关键字即可。下面定义一个交换值的函数,参数传递进去之后,形参的变化将被保留。
func swapTwoInts(inout a: Int,inout b: Int) { let temporaryA = a a=b b = temporaryA}var a=1,b=2swap(&a,&b)print("a=\(a),b=\(b)")
以上代码的输出结果为
a=2,b=1
注意,调用含有inout参数的函数时,inout参数的前面要加上&符号。
函数类型函数是有类型的!既然有类型,就能够声明该类型的变量和常量。例如
func sayHello(name :String) ->String{ return "hello,\(name)"}func sayHi(name :String) ->String{ return "hi,\(name)"}
这两个函数的类型都是为(String)->(String)
函数类型也像一般类型一样,可以声明常量和变量。先声明两个函数
var myFunc :(String)->(String) = sayHelloprint(myFunc("kite"))myFunc=sayHiprint(myFunc("kite"))
上面代码中的myFunc就是(String)->(String)类型的函数变量,函数的变量也可以像函数一样调用。函数类型也同样支持类型推测,所以,在声明myFunc时如果直接赋值的话,也可以不指定类型如下:
var myFunc = sayHello
最后,函数还可以被作为另一个函数的参数或者返回值,我就不举例子了,读者自己发挥吧
总结以上是内存溢出为你收集整理的swift 函数全部内容,希望文章能够帮你解决swift 函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)