如何根据字典的键和值创建变量?以下摘录(如PHP)可能吗?
julia> d = Dict(
"key1" =>111,
"key2" =>222,
"key3" =>333
);
julia> extract(d)
julia> key1, key2, key3
(111,222,333)
答案 0 :(得分:1)
k = collect(keys(d))
v = collect(values(d))
键和值都返回迭代器。 然后收集生成一个数组。
但请注意,您通常不需要这样做,只需使用
遍历字典即可for (k, v) in d
答案 1 :(得分:1)
可以使用eval
将新变量引入 global 范围:
julia> x = 1
1
julia> function testeval()
eval(:(x = 5))
return x
end
testeval (generic function with 1 method)
julia> testeval()
5
julia> x # the global x has changed!
5
extract
函数可能如下所示:
julia> function extract(d)
expr = quote end
for (k, v) in d
push!(expr.args, :($(Symbol(k)) = $v))
end
eval(expr)
return
end
julia> extract(d)
julia> key1, key2, key3
(111,222,333)
请注意,每个模块都有自己的全局范围。因此,这将将变量引入定义extract
函数的模块的范围,即,如果在示例中在REPL处定义,则将Main
模块引入eval
模块。
使用cxx_stdlib
时应该非常小心,并首先考虑其他方法,例如David P. Sanders和Dan Getz提到的方法。