我在Xcode6 Beta上玩Swift,当我在func定义'#'中使用时,就像在Apple的Swift编程指南中一样,我得到以下编译器错误:
参数中的无关'#':'characterToFind'已经是关键字参数名称
// this code is a copy-paste code from apple's Swift language programing guide
func containsCharacter(#string: String, #characterToFind: Character) -> Bool {
for character in string {
if character == characterToFind {
return true
}
}
return false
}
Run Code Online (Sandbox Code Playgroud)
它只是新Xcode的一个错误吗?
Gab*_*lla 13
如果它是一个方法(func
在一个类中),那么这#
是多余的,我想这就是编译器的意思.
在方法中,假设第一个参数名称只是本地名称,而其他名称自动被假定为外部名称和本地名称,就好像您已经#
在它们前面写了一样.
所以,而不是
func containsCharacter(#string: String, #characterToFind: Character) -> Bool
Run Code Online (Sandbox Code Playgroud)
你可以写
func containsCharacter(#string: String, characterToFind: Character) -> Bool
Run Code Online (Sandbox Code Playgroud)
这将是完全相同的事情.
为了进一步证明这一点,我在操场上尝试了这个
func foo(#x: Int, #y: Int) { }
class foobar {
func foo(#x: Int, #y: Int)
func bar(#x: Int, y: Int)
}
Run Code Online (Sandbox Code Playgroud)
这三个函数是相同的,但编译器会在第二个函数上发出警告 foo
参数中的无关'#':'characterToFind'已经是关键字参数名称
同样,第一个in 方法之后的参数已经自动被视为外部名称.
归档时间: |
|
查看次数: |
1717 次 |
最近记录: |