2017-07-07 58 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"] 

這也讓溝通更深層通過包括幾個層次。