julia参数类型,用户定义类型

时间:2014-11-27 23:31:47

标签: julia

假设我有参数类型:

type MyType{T}
     var1
end

在大多数情况下,T是一个简单的整数,并且没有问题。但是,有时T是单例类型的实例,如:

type Joker end

因此,我想实例化MyType{Joker()}(4),但我有以下错误消息:

ERROR: type: apply_type: in MyType, expected Type{T<:Top}, got Joker

阅读此消息,我理解类型的参数必须在“顶部”定义...这似乎是正确的,而MyType{MyType{4}(3)}(2)会抛出类似的错误消息。

在文档中:http://julia.readthedocs.org/en/latest/manual/types/#man-parametric-types没有提到这样的限制(或者我没有找到它!)。

如何让MyType{Joker()}(4)以我想要的方式工作?

1 个答案:

答案 0 :(得分:0)

在这里回答:https://groups.google.com/forum/?fromgroups=#!topic/julia-users/gwgj_Mne2eY

有两种解决方案:

  • 使用Joker类型而不是实例Joker():MyType{Joker}(3)
  • 或使Joker类型不可变immutable Joker end 然后使用MyType{Joker()}(3)

由于Joker类型中没有字段,我认为第一个字段更实用。