1.函数的定义与调用:
使用func来声明函数,’->‘指定函数返回值
func test()
{
print("qwert");
}
func test1()->Int
{
return 100
}
test1(5)
2.参数:
(1)外部参数名
一般形式如下:
func 函数名(外部参数名 本地参数名:数据类型)
{
代码
}
调用形式如下:
函数名(外部参数名:参数值)
例如:
func test(str1 s1: String,str2 s2: String, str3 s3: String)
{
print("\(s1)\(s3)\(s2)")
}
test(stre: "Hello", str2: "Word", str3: "!")
其中,str1、str2、str3都是外部参数名。运行结果如下:
Hello!Word
(2)参数默认值
建议:有默认值的情况,参数统统都放在后面;调用时参数顺序,尽量与声明函数时的顺序一样
func add(a: Int , b: Int = 6 ,c: Int = 7) ->Int
{
return a + b + c
}
add(3)//输出13
func add(a: Int , b: Int ,c: Int = 7) ->Int
{
return a + b + c
}
add(3,b:6)//输出13
(3)可变长度参数
(4)参数值可变
定义:一个可变参数的参数接收零个或多个制定类型的值。写可变参数的参数时,需要在参数的类型名称后面加上(...)
一个函数最多有一个可变参数并作为最后一个参数
func add(initNum: Int,numbers:Int...)->Int {
var total = initNum
for num in numbers {
total += num
}
return total
}
add(5,numbers: 6,7,9)//输出27
(5)inout参数
默认情况下,函数的参数是常量。可以通过var将其转换为变量,但这个变量对于外部是无效的,函数执行完就结束了
func vtest( var a: Int) ->Int{
return (++a)
}
var i = 6
let result = vtest(i) //此时i=7
i // 这里i=6
通过输入输出参数可以在函数内部修改函数外部的变量(在参数前用inout修饰。注意:这里只能传入变量,不能传入常量和字面量,因为这些是不能变的一旦定义,当我们传入的时候,在变量名字前面用&符号修饰表示,传递给inout参数,表明这个变量在参数内部是可以被改变的)
注意:inout修饰的参数是不能有默认值的,有范围的参数集合也不能被修饰,另外,一个参数一旦被inout修饰,就不能再被var和let修饰了
func vtest2( inout a: Int) ->Int
{
a++
return a
}
var m=8
//vtest2(m) //会报错
//调用时参数加上&符号
vtest2(&m) //9
m //9