swift 函数
swift中的函数的功能足够强大。先定义几个简单的函数看看 func printValue(content :String){
print(content)
}
func sayHello(name :String) ->String{
return "hello,(name)"
}
//依次调用上面的两个函数
printValue("hello,world")
sayHello("kite")
参数和返回值定义一个函数是以 外部参数外部参数是在调用该函数时需要明确给出的参数名,这样做可以提高代码的可读性。定义外部参数的方式是将外部参数名写在形参的前面,用空格隔开。 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,kite hi,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=2
swap(&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)"
}
这两个函数的类型都是为 函数类型也像一般类型一样,可以声明常量和变量。先声明两个函数 var myFunc :(String)->(String) = sayHello
print(myFunc("kite"))
myFunc=sayHi
print(myFunc("kite"))
上面代码中的myFunc就是 var myFunc = sayHello
最后,函数还可以被作为另一个函数的参数或者返回值,我就不举例子了,读者自己发挥吧 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |