按照iachievedit的说明并使用mccuneware的ncurses包,我无法运行以下代码而不会出错。
import Foundation
import CNCURSES
import Glibc
enum Signal:Int32 {
case INT = 2
case WINCH = 28
}
typealias SignalHandler = __sighandler_t
func trap(signum:Signal, action:SignalHandler) {
signal(signum.rawValue, action)
}
trap(.INT) { signal in
endwin()
exit(0)
}
initscr()
noecho() // Turn on noecho, though it doesn't matter in this example
curs_set(0) // 0 is invisible, 1 is visible, 2 is very visible
move(0, 0)
addstr("UL")
refresh() // This is required to update the screen
move(23,78)
addstr("LR")
refresh()
select(0, nil, nil, nil, nil) // Wait
错误是:
Compile Swift Module 'ncurses' (1 sources)
/home/luis/Dropbox/Documentos/Coding/Swift/ncurses/Sources/ncurses.swift:17:1: error: expressions are not allowed at the top level
initscr()
^
目录结构是:
的ncurses / Package.swift
的ncurses /来源/ ncurses.swift
上述CNCURSES在Package.swift中调用:
// swift-tools-version:3.1
import PackageDescription
let package = Package(
name: "ncurses",
dependencies: [
.Package(url: "https://github.com/mccuneware/CNCURSES", majorVersion:1),
]
)
对我来说,说明已经过时,但如何规避错误?
答案 0 :(得分:1)
表达式确实不能位于模块的顶层。您必须在main.swift
文件中编写这些文件,这是编译器所期望的。 main.swift
文件是程序执行的入口点。
准确地说:包含根级指令的文件必须命名为main.swift
,而不是其他任何内容;当然,其他文件可以存在,但它们不能有顶级指令。