Julia:如何将文件 A 的所有变量探索到文件 B 中?
Julia: How can I explore all the variables of file A into file B?
我有几个关于 Julia 的问题。我做了一些在线挖掘,但找不到任何答案。如果我有一个文件 nameA.jl,其中有很多变量(例如,物理常数,如质子质量),当我需要使用时,我如何轻松地 export/call 所有这些变量另一个文件(即 nameB.jl)。
其次,通过 "class" 创建某种 "global" 变量的最佳方法是什么(我知道 Julia 没有类似于 Python 的 class 概念) 或其他方式,这样我就可以轻松访问项目中的任何其他文件并根据需要进行修改。
我确实尝试从 google 那里获得这些答案,但找不到任何帮助。
谢谢
第一个问题:
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
使用PhysicalConstants.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
我有几个关于 Julia 的问题。我做了一些在线挖掘,但找不到任何答案。如果我有一个文件 nameA.jl,其中有很多变量(例如,物理常数,如质子质量),当我需要使用时,我如何轻松地 export/call 所有这些变量另一个文件(即 nameB.jl)。
其次,通过 "class" 创建某种 "global" 变量的最佳方法是什么(我知道 Julia 没有类似于 Python 的 class 概念) 或其他方式,这样我就可以轻松访问项目中的任何其他文件并根据需要进行修改。
我确实尝试从 google 那里获得这些答案,但找不到任何帮助。
谢谢
第一个问题:
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
使用PhysicalConstants.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