首页 > 解决方案 > 创建 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)

标签: julia

解决方案


可以打个逗号

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}

推荐阅读