Swift Python';是python-i thisfiletoload.py吗?

Swift Python';是python-i thisfiletoload.py吗?,swift,read-eval-print-loop,interactive-mode,Swift,Read Eval Print Loop,Interactive Mode,Python的Python-i thisfiletoload.py的swift REPL的等价物是什么?谢谢i、 e python -i thisfiletoload.py 在命令提示中。swift REPL的等价物是什么?swift过去有一个-i“输入”标志,但该标志已被弃用,不再需要 从命令行运行swift[file.swift]将产生您想要的行为 test.swift: println("hello") let x = 1 println("x = \(x)") 控制台输出: ➜ T

Python的Python-i thisfiletoload.py的swift REPL的等价物是什么?谢谢i、 e

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'

我只能通过首先将文件转换为模块来实现这一点

$ 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-1103.0.32.51)。 类型:帮助获取帮助。

1>
导入MyCode

2>
///开始使用模块的代码…


作为.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
导入mycode


如果您修改命令以将其结果输出到当前目录以外的其他位置,请确保通过
-L
-I
参数将更改传递给REPL。

我的回答对您有帮助吗?如果没有,请将其标记为已接受。当我在命令提示符下键入swift[file.swift]时,在swift文件运行后,它将返回到命令提示符,而不是与声明的所有变量一起保留在REPL中。
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
}