Python 的 python -i thisfiletoload.py 的 swift REPL 的等价物是什么?谢谢。IE
python -i thisfiletoload.py
在命令提示符中。什么是 swift REPL 等价物?
Python 的 python -i thisfiletoload.py 的 swift REPL 的等价物是什么?谢谢。IE
python -i thisfiletoload.py
在命令提示符中。什么是 swift REPL 等价物?
Swift 曾经有一个-i
“输入”标志,但该标志已被弃用且不再需要。
swift [file.swift]
从命令行运行将导致您想要的行为。
test.swift
:
println("hello")
let x = 1
println("x = \(x)")
控制台输出:
➜ Test swift test.swift
hello
x = 1
与-i
:
➜ Test swift -i test.swift
<unknown>:0: error: the flag '-i' is no longer required and has been removed; use 'swift input-filename'
版本:
➜ Test swift --version
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
Target: x86_64-apple-darwin14.3.0
我只能通过首先将文件转换为模块来完成此操作。
$ swiftc filename.swift -emit-library -sdk $( xcrun --sdk macosx --show-sdk-path) -emit-module -module-link-name MyCode -module-name MyCode -lSystem
这将编译您的文件,并在当前目录中创建一个 .dylib 和 .swiftmodule (您当然必须具有读写权限)。然后,从同一个目录中,只需:
$ swift -L. -I.
欢迎使用 Apple Swift 5.2.2 版 (swiftlang-1103.0.32.6 clang-1103.0.32.51)。输入 :help 寻求帮助。
1> import MyCode
2> /// Begin using your module's code...
作为 .bashrc 函数,您可以:
repl_mod () {
SDK=$( xcrun --sdk macosx --show-sdk-path)
MODNAME=${1%.swift}
$( xcrun -f swiftc) $1 -emit-library -sdk $SDK -emit-module -module-link-name $MODNAME -module-name $MODNAME -lSystem
}
这将在当前目录中生成一个以您的文件名命名的模块:
repl_mod mycode.swift
swift -L. -I.
...
>1 import mycode
如果您修改命令以在当前目录以外的位置输出其结果,请务必通过-L
和-I
args 将该更改传达给 REPL。