func 函数名(形参列表) -> 返回值类型 {
// 函数体...
}
*/
//参数为两个int 类型 , 返回值为int类型
func sum(num1:Int, num2: Int) -> Int{
return num1 + num2
}
let c : Int = sum(12, num2: 3)
print("这是------\(c)")
//没有返回值(3种写法)
func sum1(num1 : Int, num2 : Int) -> Void{
}
func sum2(num1: Int, num2 : Int) -> (){
}
func sum3 (num1 : Int, num2 : Int){
}
//没有形参,括号也不能省
func sum4() -> Void{
}
//函数可以返回元组数据
func people(index : Int) -> (name : String, age : Int){
if index == 1 {
return ("张三", 20)
} else {
return ("其他人", 0)
}
}
print("这个人是\(people(1))")
let p1 = people(1)
print("p1的名字是\(p1.name), p1的年龄是\(p1.age)")
/*func 函数名(外部参数名 形式参数名: 形式参数类型) -> 返回值类型 {
// 函数体...
}*/
//
// func result(stu_name name: String, stu_age age: Int, stu_score score: Double){
//
// print("name = \(name), age = \(age), score = \(score)")
//
// }
//
// result(stu_name: "hiahia", stu_age: 12, stu_score: 43.3)
//使用#简化外部参数名(现在已经不再用了)
// func result(name: String, age: Int, score: Double){
//
// print("name = \(name), age = \(age), score = \(score)")
//
// }
//
// result("werqr", age: 22, score: 32.1)
//默认参数值, 会自动打印出来默认值
// func result(stu_name name: String, stu_age age: Int = 20, stu_score score: Double){
//
// print("name = \(name), age = \(age), score = \(score)")
//
// }
//
// result(stu_name: "name", stu_score: 32.1)
//在带有默认参数值的参数名前加个下划线 _ ,调用函数时就不用写外部参数名
// func result(stu_name name: String, _ age: Int, stu_score score: Double){
//
// print("name = \(name), age = \(age), score = \(score)")
//
// }
//
// result(stu_name: "321", 12, stu_score: 33.3)
//默认情况下,函数的参数都是常量参数,不能在函数内部修改,如果需要在内部修改,需要加var修饰
func append(var str: String, supplix : String, num: Int) -> String{
for _ in 1...num{
str += supplix
}
return str
}
let str1 = append("xiaoming", supplix: "66666", num: 2)
print(str1)
/*
在C语言中,利用指针可以在函数内部修改外部变量的值
在Swift中,利用输入输出参数,也可以在函数内部修改外部变量的值
inout 输入输出参数,顾名思义,能输入一个值进来,也可以输出一个值到外部
传递实参时,必须在实参的前面加上&
不能传入常量或者字面量(比如10)作为参数值(因为它们都不可改)
输入输出参数不能有默认值
输入输出参数不能是可变参数
输入输出参数不能再使用let、var修饰(inout和let、var不能共存)
*/
// func swap(inout num1: Int, inout num2: Int){
//
// let temp = num1
// num1 = num2
// num2 = temp
//
// }
//
// var a = 12
// var b = 56
// swap(&a, num2: &b)
//函数类型 (int, int) -> ()
//可以利用函数类型来定义变量
func sum11(num1: Int, num2: Int) -> Int {
return num1 + num2
}
let fn : (Int, Int) -> Int = sum11
let ss = fn(10, 20)
print(ss)
//函数也可以作为参数
func printResult(fn : (Int, Int) -> Int, num1: Int, num2: Int){
print("-----%d", fn(10, 20))
}
//函数也可作为返回值
//函数重载: 函数名相同,类型名不同
//嵌套函数, 全局函数