swift函数是个重点,但是不难理解,特殊的我会说明的。
函数的定义
/// 函数定义,格式 函数名(形参列表)->返回值类型
func sum(x:Int,y:Int) -> Int {
return x + y
}
在外部调用print(sum(x: 10, y: 50))
,这个说明一下:
//swift1.0调用的方式 sum(10,50)所有的形参都会省略
//1.0 其他的程序员非常喜欢
//swift2.0调用的方式 sum(10, y: 50),第一个形参的名称会省略
//swift3.0调用的方式 OC的程序员非常喜欢
外部参数
func sum1(num1 x:Int,num2 y:Int) -> Int {
return x + y
}
调用print(sum1(num1: 30, num2: 60))
,说明一下:
//外部参数就是在形参前加一个名字
//外部参数不会影响函数内部细节
//外部参数会让外部调用方看起来更加的直观
另外一种写法:
func sum2(_ x:Int,_ y:Int) -> Int {
//在swift中_就是可以忽略任意不感兴趣的内容
//Immutable value 'i' was never used; consider replacing with '_' or removing it
// i从来没有被用到,建议使用_替代
//for i in 0..<10 {
for _ in 0..<10 {
print("hello world")
}
return x + y
}
调用print(sum2(40, 60))
,如果使用下划线_,在外部调用函数时,会忽略形参的名字.
函数的默认值
func sum3(x:Int = 1,y:Int = 2) -> Int {
return x + y
}
然后我们这么调用:
print(sum3())
print(sum3(x: 10, y: 20))
print(sum3(x: 10))
print(sum3(x: 30))
打印的值是:
3
30
12
32
说明:
//通过给参数设置默认值,在调用的时候,可以任意组合参数,如果不指定的,就使用默认值
// OC中需要定义很对的方法,以及方法实现,最终调用包含所有参数的那个函数
与OC对比一下:
可以看出OC中如果想组合不同参数的话就得写很多个方法,第一个带一个参数,第二个带两个参数,举个例子就是,如果你想使用通过url加载图片的话就用第一个,如果还想带placeholder图的话就使用第二个,所以你需要写很多个方法满足不同的需求,一般为了达到效果,调用那个最长的函数。如果在swift中的话,直接就可以写一个,然后定义一个默认值,如果需要改哪个参数的话就调的时候给个值就可以,其他的还是使用默认的值,调用起来比较方便。
无返回值的情况
/*
知道就行,主要用在闭包,在阅读第三方代码时保证能够看懂
-直接省略
-()
-void
*/
func demo1() {
print("哈哈")
}
//->输出到目标
func demo2() -> () {
print("呵呵")
}
func demo3 () -> Void {
print("嘻嘻")
}
这几种就是什么返回值都没有。
总结
函数比较重要,要多多琢磨,加深理解。