首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode6.3.2具有静态常数的Swift错误

Xcode6.3.2具有静态常数的Swift错误
EN

Stack Overflow用户
提问于 2015-06-08 01:07:41
回答 3查看 121关注 0票数 1

我试图弄清楚为什么在Xcode 6.3.2中这种类型的构造会经常出现编译问题。

代码语言:javascript
复制
class Foo {
  static let CONSTANT_NAME = "CONSTANT_STRING"
  ...
  func bar () -> String {
    var s = String(format:"%s,%d\n", CONSTANT_NAME, 7)
    return s
  }
  ...
}

由于我理解这种语言,这应该是完全合法的代码,但是Xcode经常(hah-pun)与它有问题,从而导致错误。

“Foo类中没有成员CONSTANT_NAME”

如果我运气好,强迫它清理,然后重建它,有时它会自己整理和工作。其他时候,即使这样做,然后尝试一个开放/关闭项目仍然不能解决这个问题。

所以,我想我隐含的后续问题(如果上面的答案是--这是法律代码)是: Xcode Swift编译器--即使是这样的基本东西也很可能引起问题--这种错误的错误吗?如果是这样的话,斯威夫特似乎处于相当糟糕的状态。

EN

回答 3

Stack Overflow用户

发布于 2015-06-08 01:14:12

static是类属性,这意味着您必须将它称为ClassName.property

代码语言:javascript
复制
class Foo {
    static let CONSTANT_NAME = "CONSTANT_STRING"
    func bar () -> String {
        var s = String(format:"%s,%d\n", Foo.CONSTANT_NAME, 7)
        return s
    }
}

那不是窃听器。它应该是这样的。类属性“属于”类。

如果希望代码不使用ClassName而工作,请不要使用static

代码语言:javascript
复制
class Foo {
    let CONSTANT_NAME = "CONSTANT_STRING"
    func bar () -> String {
        var s = String(format:"%s,%d\n",CONSTANT_NAME, 7)
        return s
    }
}

苹果文档中的更多细节

票数 5
EN

Stack Overflow用户

发布于 2015-06-08 01:20:49

static let语法是合法和有效的。问题是当您访问该变量时必须完全限定它:

代码语言:javascript
复制
var s = String(format:"%s,%d\n", Foo.CONSTANT_NAME, 7)

编译器的错误有点迟钝,但它说的是实话.CONSTANT_NAME不是成员,而是Foo:Swift性质类的类型属性。

票数 2
EN

Stack Overflow用户

发布于 2015-06-08 02:36:10

我听说你说要保存钥匙笔划。我个人一直试图通过挤奶每个捷径来使我的Swift代码尽可能地符合习惯,但是当您找到这样的代码时,您应该感到高兴的是,编译器要求您保持安全:

代码语言:javascript
复制
class Foo {
    static let CONSTANT = "hello"

    func bar() -> String {
        let CONSTANT = "bye"
        return CONSTANT // I know which one! Thanks Swift!
    }
}
println(Foo.CONSTANT)
println(Foo().bar())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30700022

复制
相关文章

相似问题

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