我可以使用Powershell的参数运行julia脚本 hometeamPositions =['Goalkeeper','Midfielder','Defender','Defender','Defender','Midfielder','Midfielder','Midfielder','Midfielder','Forward','Forward','Goalkeeper','Defender','Defender','Midfielder','Midfielder','Forward','Forward']
hometeamPlayers = ['S. P. Brown','C. Winchester','M. Onariase','W.
Boyle','J. Cranston','H. Pell','J. Rowe','K. Storer','B. Waters','D.
Wright','D. Holman','R. Lovett','J. Barthram','T. Plavotic','J.
Munns','L. Davis','K. Wootton','J. Dayton']
。我可以使用> julia test.jl 'a' 'b'
从REPL运行脚本,但include("test.jl")
只接受一个参数 - 脚本的路径。
从使用iunclude
开始,似乎它将脚本作为代码块运行,所有变量都引用当前(?)范围,因此如果我在REPL中明确重新定义include
变量,它会抓住它并显示相应的脚本结果:
ARGS
然而,这给出了重新定义>ARGS="c","d"
>include("test.jl") # prints its arguments in a loop
c
d
的警告,并且似乎不是这样做的预期方式。有没有其他方法从REPL(或从另一个脚本)运行脚本,同时明确说明其参数?
答案 0 :(得分:4)
您可能不想通过include
运行自包含脚本。有两种选择:
如果脚本不在你的控件中并且从命令行调用它是规范界面,只需在单独的Julia进程中调用它。 run(`$JULIA_HOME/julia path/to/script.jl arg1 arg2`)
。有关详细信息,请参阅running external commands。
如果您可以控制脚本,那么将它分成两部分可能更有意义:类似于库的文件,它只定义了Julia函数(但不运行任何函数)分析)和一个命令行文件,它解析参数并调用库定义的函数。您现在可以include
编写命令行界面和第二个脚本,或者更好地使类似库的文件成为一个完整的package。
答案 1 :(得分:1)
这个解决方案不干净或朱莉娅风格的服务。但如果你坚持:
要在弄乱ARGS
时使用原始ARGS
但要改变其内容,以避免出现警告。如下所示:
empty!(ARGS)
push!(ARGS,"argument1")
push!(ARGS,"argument2")
include("file.jl")
这个问题也与@AlexanderMorley所指出的juliapassing-argument-to-the-includefile-jl重复或相关。