当我试图了解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)
答案 0 :(得分:2)
您可以输入逗号
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}