也許這樣嗎?
基本方法
我打算從包含文件中讀取config.txt
值以下
A=1.0
B = 2.1
C= 3.3
D =4.4
我不想硬編碼可能是有什麼變數,所以我打算讓所有的人都在一個快譯通,是這樣的:
julia> vars = Dict{String, Float64}()
Dict{String,Float64} with 0 entries
julia> f = open("config.txt")
IOStream(<file config.txt>)
julia> for line in eachline(f)
var, val = split(line, "=")
vars[strip(var)] = parse(Float64, val)
end
julia> vars
Dict{String,Float64} with 4 entries:
"B" => 2.1
"A" => 1.0
"C" => 3.3
"D" => 4.4
julia> vars["A"]
1.0
只閱讀小號青梅變量
如果你想限制組應讀的變量,它很容易做的一樣好:
julia> vars = Dict{String, Float64}()
Dict{String,Float64} with 0 entries
julia> allowed = ["A", "B", "C"]
3-element Array{String,1}:
"A"
"B"
"C"
julia> f = open("config.txt")
IOStream(<file config.txt>)
julia> for line in eachline(f)
var, val = split(line, "=")
stripped = strip(var)
if stripped in allowed
vars[stripped] = parse(Float64, val)
end
end
julia> vars
Dict{String,Float64} with 3 entries:
"B" => 2.1
"A" => 1.0
"C" => 3.3
現在D=...
從config.txt
被忽略,正如其名字中allowed
沒有。
有變量作爲變量,而不是快譯通
還有一個辦法是:
function go(;A=0.0, B=0.0, C=0.0)
println("A = $A, B = $B, C = $C")
end
vars = Dict{Symbol, Float64}()
f = open("config.txt")
allowed = ["A", "B", "C"]
for line in eachline(f)
var, val = split(line, "=")
stripped = strip(var)
if stripped in allowed
vars[Symbol(stripped)] = parse(Float64, val)
end
end
go(;vars...)
與同config.txt
打印運行此
A = 1.0, B = 2.1, C = 3.3
謝謝。看起來很有趣。 – devendra
我現在再添加一個方法。 – avysk