参数和返回值决定函数的类型。参数数量和类型完全相同,同时返回值类型也相同的函数为同类型函数
// 函数的声明与实现
func mathSum(num1:Int,num2:Int)->Int{
return num1 + num2
}
var a = mathSum(num1: 5, num2: 6)
// 和OC不同,返回值可以是多个对象,返回值可以是元祖类型,甚至是可选元祖类型
func checkID(id:Int)->(succese:Bool,msg:String)?{
guard id == 10086 else {
return nil
}
return (true,"checkIn")
}
if let temp = checkID(id: 10086) {
if temp.succese {
print(temp.msg)
}
}
函数名:Swift函数命名综合了OC和JAVA的命名优缺点,在简洁与
实用间找到了平衡点
// 只命名了内部函数名,因此默认内部函数名与外部函数名相同
func Sum(parama1:Int,parama2:Int,parama3:Int)->Int{
return parama1 + parama2 + parama3;
}
var sumNum = Sum(parama1: 1, parama2: 2, parama3: 3)
// 分别命名了外部参数名和内部参数名,函数作用域内实用内部函数名,外部调用实用外部函数名,重载时作用会更大
func Sum(out1 parama1:Int,out2 parama2:Int,out3 parama3:Int)->Int{
return parama1 + parama2 + parama3;
}
var sum = Sum(out1: 1, out2: 2, out3: 3)
// 使用 _ 来忽略函数名
func Sum(_ parama1:Int,out2 parama2:Int,out3 parama3:Int)->Int{
return parama1 + parama2 + parama3;
}
var sum = Sum(1, out2: 2, out3: 3)
可以给函数设置默认值,设置了默认值的函数调用时有两种调用方式,可以略过含默认值的参数,但不能改变参数顺序
编写参数个数不定的函数
// 一个函数只有包含一个可变参数
func Sum(parama1:String...)->String{
var temp:String = ""
for item in parama1 {
temp.append(item)
}
return temp
}
var sum = Sum(parama1: "a","a","a","a","a","a","a","a","a")
inout
// inout类型
// 值类型(基本数据类型、枚举、结构体)作为参数传递时会将原值复制为一份常量传递且不可修改,这个时候就需要用到 inout类型
func Sum(num:inout Int){
num += 1;
}
网友评论