- 在 Swift 中声明方法的关键字 是
func
- 格式 `func 函数名称(参数...) -> 返回类型`
- 没有返回值的话 `-> ` 它以及后面的类型是不需要的
- 函数的声明
- 没有参数,没有返回值
- 没有参数,没有返回值
func sayHello()
{
print("hello word")
}
- 有参数,没有返回值
* ````objc
func sayHello(name: String)
{
print("hello, \(name)")
}
// 参数可以添加默认值
func sayHello(name: String = "Swift")
{
print("hello \(name)") // 不传递参数使用默认值
}
- 有参数,有返回值
* ````objc
func sayHello(name: String) -> String
{
return "hello, (name)"
}
print(sayHello("Swift")) // 输出 hello, Swift
- 可变参数
* ````objc
func test(number:Int...) // 类型后面加上... number的类型会成为一个Int类型的数组
{
for num: Int in number
{
print(num)
}
}
test(1,2,3,4,5) // 循环输出 1 2 3 4 5
- 函数作为参数或者返回值
// 函数作为参数或者返回值
// swift 能使用中文当做方法名或者变
func 加法(a: Int, b: Int) -> Int 量名
{
return a + b
}
func 减法(a: Int, b: Int) -> Int
{
return a - b
}
var 加 = 加法 // 加上() 是调用方法
// 方法作为参数
func test(a: Int, b: Int, function: (Int,Int) -> Int ) -> Int
{
return function(a,b)
}
print(test(10, b: 1, function: 加))
// 方法作为返回值
func test(a: Int, b: Int, isTrue: Bool) -> Int
{
return isTrue ? 减法(a, b: b) : 加法(a, b: b)
}
print(test(10, b: 20, isTrue: false))
在方法内部改变外面参数的值使用到的关键字是
inout
var number = 1
func test(inout a:Int)
{
a = 100
}
test(&number) // 发现方法参数前面出现了 `&`,取地址符,有oc功底的人应该明白 inout关键字的实现方式了吧...没错就是地址传递!
print(number) // 输出 100
为参数起 别名
func sayHello(姓名 name: String) //`姓名`就是`别名`
{
print("hello \(name)")
}
sayHello(姓名: "Swift") // 调用方法的时候`别名`不能省略