如果模块不是main.swift,则“顶层不允许表达式”

时间:2014-07-08 22:16:37

标签: xcode swift

main.swift文件有什么特别之处吗?

我在XCode中创建了一个基于命令行的项目。如果我将表达式println("Hello, World!");放在一个新的swift文件中说test.swift,我将收到错误消息:Expressions are not allowed at the top level

但是,此表达式位于由新项目中的XCode创建的main.swift的顶层。 XCode不会标记此类异常。

3 个答案:

答案 0 :(得分:14)

显然是的,按照answer但是,没有关于此行为的引用

<强>更新 这记录在the Swift blog

  

...之前我们说过,应用程序源文件的大多数中不允许使用顶级代码。例外是一个名为“main.swift”的特殊文件,其行为与操场文件非常相似,但是使用您应用的源代码构建。 “main.swift”文件可以包含顶级代码,并且依赖于顺序的规则也适用。实际上,在“main.swift”中运行的第一行代码被隐式定义为程序的主要入口点。这允许最小的Swift程序是单行 - 只要该行在“main.swift”中。

答案 1 :(得分:0)

我想知道它是不是真的是main.swift,或者你有两个文件。这是一个简单的演示。

文件夹:swift-testy
Files1:main.swift
Files2:ex1.swift

内容是:

main.swift

import Foundation

println("Hello, World!")

let chaulky = Dog()

chaulky.bark()

ex1.swift

import Foundation

class Dog {
    func bark() {
        println("woof") // This is a comment
    }
}

单击运行按钮

时的输出

你好,世界! 纬

答案 2 :(得分:0)

如果你有多个swift文件并且你正在构建一个命令行项目,那么请确保你有 main.swift ,这将作为你的应用程序的入口点。此外, main.swift 应该在您的模块中,否则您将收到以下错误:

error: the package has an unsupported layout, unexpected source file(s) found: /Users/.../../Hello/main.swift

修复:移动模块内的文件