【问题标题】:How do I create a recursive typealias in julia?如何在 Julia 中创建递归类型别名?
【发布时间】:2015-06-12 04:23:02
【问题描述】:

我想创建一个嵌套的元组类型,它可以容纳自己或它包含的特定类型。

所以我想:

typealias NestedTuple{T} Tuple{Union(T,NestedTuple{T}),Union(T,NestedTuple{T})}

但是这会出现错误

LoadError: UndefVarError: NestedTuple not defined

这种typealias一般是怎么做的?

(我在朱莉娅0.4)

【问题讨论】:

标签: recursion types julia type-alias


【解决方案1】:

为你正在做的事情做这项工作?

typealias NestedTuple0{N,T} Tuple{Union(T,N),Union(T,N)}
typealias NestedTuple{T} NestedTuple0{NestedTuple0{T},T}

注意:我只能在 036 中尝试,而不是 04


使用示例:

function rnt(p)
    np = 0.95*p
    a=rand() <p ? rnt(np) : 1
    b=rand() <p ? rnt(np) : 2
    (a,b)
end

x=rnt(1.0)

typeof(x)<:NestedTuple{Int64} #returns true

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多