ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?

ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?,第1张

概述据我所知,从 Xcode 6.3 / Swift 1.2开始,我可以在类中使用静态变量和方法.但是,当我尝试通过调用静态函数初始化静态变量时,编译器不喜欢它(我在下面的示例中得到错误’使用未解析的标识符getDefaultString’).这是一个演示我的问题的片段: import Foundationpublic class Settings { private static var 据我所知,从 Xcode 6.3 / Swift 1.2开始,我可以在类中使用静态变量和方法.但是,当我尝试通过调用静态函数初始化静态变量时,编译器不喜欢它(我在下面的示例中得到错误’使用未解析的标识符getDefaultString’).这是一个演示我的问题的片段:
import Foundationpublic class Settings {    private static var _bundle = NSBundle.mainBundle()    static func getDefaultString(key: String) -> String {        return _bundle.objectForInfoDictionaryKey(key) as! String    }    private static var _server = getDefaultString("DefaultServer")    public class var server: String {        get { return _server }        set { _server = newValue }    }}

有人能帮我理解为什么我不能这样做吗?

解决方法 这应该工作:
private static var _server = Settings.getDefaultString("DefaultServer")

我不确切地知道为什么,似乎在游戏中存在某种假设,即在其前面没有类型限定的方法是实例方法.但这并不完全有效.例如.这会在游乐场产生有趣的结果:

class Foo {        static func initFoo() -> String {            return "static"        }        func initFoo() -> String {            return "instance"        }        static var foo: String = initFoo()    }    Foo.foo

…不需要在initFoo()前面限定类型,但仍然会选择静态类型.可能是一个小错误.

总结

以上是内存溢出为你收集整理的ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?全部内容,希望文章能够帮你解决ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存