首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCode6 Beta中的编译器警告--“简写外部参数名称”

XCode6 Beta中的编译器警告--“简写外部参数名称”
EN

Stack Overflow用户
提问于 2014-06-04 18:00:52
回答 1查看 1.7K关注 0票数 3

我正在Xcode6 Beta上玩Swift,当我在函数定义'#‘中使用时,就像在苹果的Swift编程指南中一样,我得到了以下编译器错误:

参数中多余的'#‘:'characterToFind’已经是关键字参数名了

代码语言:javascript
复制
// 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的一个bug吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-04 20:38:04

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

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

所以,而不是

代码语言:javascript
复制
func containsCharacter(#string: String, #characterToFind: Character) -> Bool

你可以写

代码语言:javascript
复制
func containsCharacter(#string: String, characterToFind: Character) -> Bool

这将是完全一样的事情。

为了进一步证明这一点,我在操场上试了一下。

代码语言:javascript
复制
func foo(#x: Int, #y: Int) { }
class foobar {
    func foo(#x: Int, #y: Int)
    func bar(#x: Int, y: Int)
}

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

参数中多余的'#‘:'characterToFind’已经是关键字参数名了

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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24044419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档