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