当我试图理解Julia中的元编程时:这段代码分别缺少了什么,我如何调用适当的Tuple构造函数?
x = (:a, :b)
p = quote
f_a = 3
f_b = 4
y = Tuple($([Symbol("f_", k) for k in x]...))
end这将生成以下代码:
quote
f_a = 3
f_b = 4
y = Tuple(f_a, f_b)
end这当然是错误的,因为Tuple没有适当的构造函数。我希望y最终成为一个元组,但我还不知道如何获得额外的括号。
换句话说,在此代码中缺少的是:
x = (:a, :b)
p = quote
f_a = 3
f_b = 4
y = ($([Symbol("f_", k) for k in x]...))
end
eval(p)
@assert isa(y, Tuple)发布于 2018-11-26 12:21:18
你可以放个逗号,
x = (:a, :b)
p = quote
f_a = 3
f_b = 4
y = ($([Symbol("f_", k) for k in x]...),) # added a comma here
end
eval(p)
@assert isa(y, Tuple)以下几点可能具有指导意义
julia> (3)
3
julia> (3,)
(3,)
julia> typeof(ans)
Tuple{Int64}https://stackoverflow.com/questions/53480133
复制相似问题