2017-07-07 218 views
1

我想知道是否有可能将参数传递给include("file.jl")。例如,我们在file.jl中解析ARGS并在那里使用它们。类似于我们通过传递参数在命令行中执行的操作。Julia:将参数传递给`include(“file.jl”)`

+1

我能问你到底想要完成什么? –

+0

想象一下,在一个模块中,我使用include(“....”)来运行多个文件,其中一些需要传递一些参数。例如理想情况下,语义上意味着include(“file1.jl”,arg1,arg2)和'file1.jl'使用这些'arg1'和'arg2'。例如想象这些参数的值本身是在调用include()的模块内部创建的。 –

+0

换句话说,除了使用命令行参数传递之外,还有其他方法可以将参数传递给另一个文件/模块中的文件吗? –

回答

3

重新分配ARGS使file.jl认为它收到参数的作品,但会导致警告(因为它会覆盖Base.ARGS)。更好的方法可能是在使用ARGS,file.jl之前使用isdefined来检查不同的参数来源。

例如,文件main.jl将是:

newARGS = String["adios","amigos"] 
include("file.jl") 

file.jl是:

localARGS = isdefined(:newARGS) ? newARGS : ARGS 
@show localARGS 

现在:

$ julia file.jl hello world 
localARGS = String["hello","world"] 

$ julia main.jl 
localARGS = String["adios","amigos"] 

这也让沟通更深层通过包括几个层次。