// 函数
// 语法格式
// func name (参数列表) -> 返回值 {
// 函数实现体
// }
// 无参数, 无返回值
func hello1() {
print("hello1")
}
func hello2() -> Void {
print("hello2")
}
// 函数调用
hello1()
// 有参
// 关于内部参数名
// 只在函数作用域内部使用的参数名
func hello3Name (name: String, age:String) {
print("你好\(name) and \(age)")
}
// 除了第一个参数, 后面的参数在调用时会自动生成一个与内部参数名相同的外部参数名
// 原则上, 第一个参数的外部参数名应该写在函数名的末尾
hello3Name("李云飞", age: "111")
func hello4Name (mingzi name1:String, mingzi2 name2:String) {
print("你好\(name1) and \(name2)")
}
// 外部参数名的添加规则, 在内部参数名前面声明中间用空格隔开
hello4Name(mingzi: "李云飞", mingzi2: "gg")
// 使用占位符 _ 省略掉自动生成的外部参数名
func hello5 (name:String,_ name2:String) {
print("你好\(name) and \(name2)")
}
hello5("李云飞", "辉哥")
// 可以为参数赋初始值, 调用时传参则更改, 不传参使用初始值
func hello6 (name: String = "李云飞", name2: String = "辉哥") {
print("你好\(name) and \(name2)")
}
hello6()
// 不写外部参数名, 默认的是第一个, 如果想更改第二个,必须把第二个外部参数名写上
hello6("仝兴为")
// 有返回值情况
// 返回值后面 直接给类型
func byebye1() -> String {
return "byebye"
}
byebye1()
func student(str:String) -> (Int, Int) {
var number = 0
var number1 = 0
for tempstr in str.characters {
switch tempstr {
case "a", "e", "i", "o", "u":
print(number)
number++
default:
print(number1)
number1++
}
}
return(number, number1)
}
student("fdsaaadfsdfsfsafas")
// 不确定参数个数, 参数个数可变
func count2 (numbers:Int...) ->Int {
var sum = 0
// 不确定个数的参数, 作为数组使用
for num in numbers {
sum += num
}
return sum
}
count2(1, 2, 3, 4, 5, 6)
// 参数在函数体内, 默认是不可变的(想要让其可变, 必须用var修饰)
func count3 (var a:Int, b:Int) ->Int{
a++
return a
}
var c = 10
count3(c , b: 0)
// inout 修饰参数, 将外部变量的地址传进来, 从而改变外部变量的值
func changeValue (inout a:Int) {
a++
}
changeValue(&c)
// 语法格式
// func name (参数列表) -> 返回值 {
// 函数实现体
// }
// 无参数, 无返回值
func hello1() {
print("hello1")
}
func hello2() -> Void {
print("hello2")
}
// 函数调用
hello1()
// 有参
// 关于内部参数名
// 只在函数作用域内部使用的参数名
func hello3Name (name: String, age:String) {
print("你好\(name) and \(age)")
}
// 除了第一个参数, 后面的参数在调用时会自动生成一个与内部参数名相同的外部参数名
// 原则上, 第一个参数的外部参数名应该写在函数名的末尾
hello3Name("李云飞", age: "111")
func hello4Name (mingzi name1:String, mingzi2 name2:String) {
print("你好\(name1) and \(name2)")
}
// 外部参数名的添加规则, 在内部参数名前面声明中间用空格隔开
hello4Name(mingzi: "李云飞", mingzi2: "gg")
// 使用占位符 _ 省略掉自动生成的外部参数名
func hello5 (name:String,_ name2:String) {
print("你好\(name) and \(name2)")
}
hello5("李云飞", "辉哥")
// 可以为参数赋初始值, 调用时传参则更改, 不传参使用初始值
func hello6 (name: String = "李云飞", name2: String = "辉哥") {
print("你好\(name) and \(name2)")
}
hello6()
// 不写外部参数名, 默认的是第一个, 如果想更改第二个,必须把第二个外部参数名写上
hello6("仝兴为")
// 有返回值情况
// 返回值后面 直接给类型
func byebye1() -> String {
return "byebye"
}
byebye1()
func student(str:String) -> (Int, Int) {
var number = 0
var number1 = 0
for tempstr in str.characters {
switch tempstr {
case "a", "e", "i", "o", "u":
print(number)
number++
default:
print(number1)
number1++
}
}
return(number, number1)
}
student("fdsaaadfsdfsfsafas")
// 不确定参数个数, 参数个数可变
func count2 (numbers:Int...) ->Int {
var sum = 0
// 不确定个数的参数, 作为数组使用
for num in numbers {
sum += num
}
return sum
}
count2(1, 2, 3, 4, 5, 6)
// 参数在函数体内, 默认是不可变的(想要让其可变, 必须用var修饰)
func count3 (var a:Int, b:Int) ->Int{
a++
return a
}
var c = 10
count3(c , b: 0)
// inout 修饰参数, 将外部变量的地址传进来, 从而改变外部变量的值
func changeValue (inout a:Int) {
a++
}
changeValue(&c)