朱莉娅:我怎样才能将文件A的所有变量都探索到文件B中?

时间:2017-02-18 04:18:58

标签: export global julia

关于朱莉娅,我有几个问题。我做了一些在线挖掘,但无法找到答案。如果我有一个文件nameA.jl,它有很多变量(例如,物理常数,如质子的质量),当我需要在另一个文件中使用时,如何轻松导出/调用所有这些变量(即,nameB.jl)。

其次,创建某种"全球"的最佳方式是什么?变量通过" class" (我知道Julia没有类似于Python的类概念)或其他意思,所以我可以轻松访问项目中的任何其他文件并根据需要进行修改。

我确实尝试从谷歌获得这些答案,但无法找到任何帮助。

谢谢

1 个答案:

答案 0 :(得分:3)

关于你的第一个问题:

PhysicalConstants.jl

module PhysicalConstants

export fine_structure_constant, proton_electron_massratio

const fine_structure_constant   = 7.2973525664e-3 
const proton_electron_massratio = 1836.15267247

end # module

UsePhysicalConstants.jl

 importall PhysicalConstants

 this = fine_structure_constant * proton_electron_massratio

 # 13.399053416751173

据我了解你的第二个问题:

ChangeableValues.jl

module ChangeableValues

export changeable_value, change_value, value

type Changeable{T}
   value::T
end

typeof_value{T}(x::Changeable{T}) = T
value{T}(x::Changeable{T}) = x.value

# changeable_value is const for speed
# changeable_value.value is not const
const changeable_value = Changeable(0)

function change_value{T}(new_value::T)
    if T == typeof_value(changeable_value)
        changeable_value.value = new_value
    else
        throw(TypeError())
    end
    return nothing
end


end # module

UseChangeableValue.jl

   import ChangeableValues: changeable_value, change_value, value

   println("value = ", value(changeable_value)) # 0
   change_value(1)
   println("value = ", value(changeable_value)) # 1
   change_value(2)
   println("value = ", value(changeable_value)) # 2

   # it remains 2 when imported elsewhere until it is changed again