我正在学习默认参数,并且搁浅了一些奇怪的东西:
import UIKit
func greet(name: String = "world") {
println("hello \(name)")
}
greet("jiaaro")
Run Code Online (Sandbox Code Playgroud)
这会抛出一个错误:
Run Code Online (Sandbox Code Playgroud)Playground execution failed: error: <REPL>:9:7: error: missing argument label 'name:' in call greet("jiaaro") ^ name:
我明白它想要,greet(name: "jiaaro")但我不明白为什么这是必要的.
Jia*_*aro 14
Swift函数可以指定本地和外部参数名称:
func greet(who name: String = "world") {
println("hello \(name)")
}
// prints "hello world"
greet()
// prints "hello jiaaro"
greet(who:"jiaaro")
// error
greet("jiaaro")
// error
greet(name: "jiaaro")
Run Code Online (Sandbox Code Playgroud)
要退出此行为,您可以使用下划线作为外部名称.请注意,第一个参数隐式使用"无外部名称"行为:
func greet(name: String = "world", _ hello: String = "hello") {
println("\(hello) \(name)")
}
// prints "hello world"
greet()
// prints "hello jiaaro"
greet("jiaaro")
// prints "hi jiaaro"
greet("jiaaro", "hi")
// error
greet(name: "jiaaro")
Run Code Online (Sandbox Code Playgroud)
现在Swift 2.0中不允许使用以下内容,请参阅下面的等效代码.
您可以使用#前缀为第一个参数使用相同的本地和外部名称:
func greet(#name: String = "world", hello: String = "hello") {
println("\(hello) \(name)")
}
// prints "hi jiaaro"
greet(name: "jiaaro", hello: "hi")
Run Code Online (Sandbox Code Playgroud)
Swift 2.0代码:
Run Code Online (Sandbox Code Playgroud)func greet(name name: String = "world", hello: String = "hello") { println("\(hello) \(name)") } // prints "hi jiaaro" greet(name: "jiaaro", hello: "hi")
| 归档时间: |
|
| 查看次数: |
9663 次 |
| 最近记录: |