【问题标题】:Namespaces and modules in the Swift languageSwift 语言中的命名空间和模块
【发布时间】:2014-07-29 01:41:27
【问题描述】:

我在从 WWDC 回家的路上一直在试验 Swift。在我看来,Swift 最引人注目的新特性之一就是命名空间。我还没有设法让它像我预期的那样工作。请查看随附的屏幕截图,如果您知道我做错了什么,请告诉我。

编辑:我当然试图删除导入语句。

【问题讨论】:

标签: xcode module namespaces clang swift


【解决方案1】:

原来这是一个已知的错误:https://devforums.apple.com/message/976286#976286

【讨论】:

    【解决方案2】:

    很抱歉,如果我在 Swift-eBook 中搜索“命名空间”或“命名空间”,则没有结果。也许您可以给我一个指向其他资源的链接?

    我会简单地使用structstatic 函数来解决您的问题。

    A 类

    struct ClassA {
        static func localize() {
            println("Localized String")
        }
    }
    

    B 类

    您可以按如下方式删除导入并执行 ClassA 函数:

    ClassA.localize()
    


    第二种方式

    在您的情况下,您也可以像这样对 String 进行扩展:

    extension String {
        func localize() -> String {
            return self+"-localized"
        }
    }
    
    println("Test".localize()) // prints "Test-localized"
    

    【讨论】:

    • 命名空间的概念不必用那个名字来描述就可以了。我尝试做的是从我的代码中访问一个函数,该函数对另一个模块是全局的,因此在另一个命名空间中。使用类、结构或扩展来实现语法并不能解决问题。原来这是一个已知的错误:devforums.apple.com/message/976286#976286
    • 顺便说一句。当他们宣布 Swift 开始时,命名空间实际上就在幻灯片上。
    猜你喜欢
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2012-01-15
    • 2020-07-14
    • 2023-03-03
    • 1970-01-01
    • 2012-11-04
    • 2011-01-22
    相关资源
    最近更新 更多