ios - XCode6 Beta 中的编译器警告 - “Shorthand External Parameter Names”

标签 ios swift xcode6

我在 Xcode6 Beta 上玩 Swift,当我在函数定义“#”中使用时,就像在苹果的 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
}

这只是新 Xcode 的一个错误吗?

最佳答案

如果它是一个方法(类中的一个 func),那么 # 是多余的,我想这就是编译器的意思。

在方法中,第一个参数名称被假定为仅本地名称,而其他参数名称被自动假定为外部名称和本地名称,就好像您在它们前面写了 # 一样。

所以,而不是

func containsCharacter(#string: String, #characterToFind: Character) -> Bool

你可以写

func containsCharacter(#string: String, characterToFind: Character) -> Bool

这将是完全相同的事情。

为了进一步证明这一点,我在 Playground 上试了一下

func foo(#x: Int, #y: Int) { }
class foobar {
    func foo(#x: Int, #y: Int)
    func bar(#x: Int, y: Int)
}

这三个函数是相同的,但编译器会在第二个 foo 上发出警告

Extraneous '#' in parameter: 'characterToFind' is already the keyword argument name

同样,方法 中第一个之后的参数已被自动视为外部名称。

关于ios - XCode6 Beta 中的编译器警告 - “Shorthand External Parameter Names”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044419/

相关文章:

ios - 如何使用 Phonemes for iOS 合成语音

ios - 如何在滚动时停止在 Collection View 中重新加载服务器图像?

ios - 意外发现 Nil 展开一个 Optional 值

ios - 仅保存最后一项,同时保存在核心数据 swift 中

ios - 如何使用 iOS 图表在 LineChart 上设置不同的颜色间隔?

ios - 如何为Xcode6制作插件

xcode - 在 Xcode 5 中禁用了 Clean Build Folder 选项

ios - CIFilter 中的 CIQRCodeGenerator 问题

Swift 4 将数据传递给另一个 Controller 同时留在同一个 Controller 中而不显示

unit-testing - XCTest 失败,出现异常 'Non-UI clients cannont be autopaused'