Swift详解之三----------函数(你想知道的都在这里)
函数(你想知道的都在这里)
1、 函数的简单定义和调用简单的无参函数就不再赘述 , name为形参 ,也是内部在数名 。 func sayHello(name:String) ->String
{
return name+" say: hello"
}
调用的时候也很简单 2、外部参数名什么是外部参数名呢,其实就是你给形参起得一个有意义的别名,让别人更理解这个参数的用途 。 func sayHello1(YourNmae name:String,name2:String) ->String
{
return name+" say: hello "+name2
}
这里调用的时候要加上这个别名 //忽略外部参数名
func add(a:Int,_ b:Int) ->Int
{
return a + b
}
add(1,1) //2
3、参数默认值函数传入参数的时候可以给一个默认值,传参数的时候这个有默认值的可传可不传 func plus(a:Int,another b:Int=0) -> Int
{
return a+b;
}
这里给b的默认值是0,在调用的时候 4、可变参数可变参数(variadic parameter)可以接受一个或多个值。函数调用时,你可以用可变参数来传入不确定数量的输入参数。通过在变量类型名后面加入(…)的方式来定义可变参数。 传入可变参数的值在函数体内当做这个类型的一个数组 func arithmeticMean(numbers: Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
这里numbers被当成了一个数组 也可以传String 或者任何其他类型 func say(name:String,content:String ... )
{
var str = name;
for item in content
{
str += item + " "
}
print(str)
}
调用 5、常量参数和变量参数函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误 但是,有时候,如果函数中有传入参数的变量值副本将是很有用的。你可以通过指定一个或多个参数为变量参数,从而避免自己在函数中定义新的变量。变量参数不是常量,你可以在函数中把它当做新的可修改副本来使用。 这时候我们需要,通过在参数名前加关键字 var 来定义变量参数: func say1(var name:String)->String
{
name += "2"
return name;
}
调用函数 6、函数类型(Function Types)什么是函数类型呢? 其实每个函数都有种特定的函数类型,由函数的参数类型和返回类型组成。比如上面的 下面看下怎么使用函数类型 。
7、返回元组我们的函数也可以返回一个元组类型 func minMax( arr:Int ... )->(max:Int,min:Int) { var max = 0 var min = 0 for item in arr { if(item<max) { max = item } if(item>min) { min = item } } return (max,min) } 这是一个很简单的函数 ,传入一个可变参数 ,然后求出这写里面的最大和最小值 。调用 : 可选元组 - 有时候我们函数里面返回的是一个nil ,所以这是我们就需要把我们的元组写成可选元组。 func mm()->(max:Int,min:Int)? { return nil } if let c = mm() { print("aa") }else { print("bb") } 这段代码最后输出的是 bb 8、输入输出参数 inout将函数的参数声明成inout 这个值可以在函数中修改 , 然后被传出函数 替换原来的值,所以不能只传入 字面量 要传入地址 加 & var myDate = 9 func normalFunc(var data:Int) { data = 100 } normalFunc(myDate) print(myDate) //9 func inoutFunc(inout data:Int) { data = 100 } inoutFunc(&myDate) print(myDate) //100 可以看到,普通函数不会改变实参的值,而inout回改变 。传得时候一定要加上 &,其实不加也会爆错得。。 9、嵌套函数你可以把函数定义在别的函数中 叫做嵌套函数 嵌套函数对外界是不可见的 还是我们刚才那几个函数 ,还可以这么玩。 func MychooseFunc(distance:Int) -> (Int)->Int { func stepBackward(input: Int) -> Int { return input - 1 } func stepForward(input: Int) -> Int { return input + 1 } return distance>10 ? stepBackward:stepForward } 暂时先这么多吧, 以后想到什么再来补充 ,大家可以收藏了当字典,忘记了来查查用法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |