创建朱莉娅·图普尔

时间:2018-11-26 11:27:57

标签: julia

当我试图了解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)

1 个答案:

答案 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}