我可以在外部构造函数中为参数类型构建无参数构造函数吗?

col*_*ang 5 julia

为了实例化类似的类型 x = MyType{Int}()

我可以定义一个内部构造函数.

immutable MyType{T}
    x::Vector{T}

    MyType() = new(T[])
end
Run Code Online (Sandbox Code Playgroud)

是否可以使用外部构造函数实现相同的目标?

Jef*_*son 1

这可以使用以下语法来完成:

(::Type{MyType{T}}){T}() = MyType{T}(T[])
Run Code Online (Sandbox Code Playgroud)

第一组括号中的内容描述了被调用的对象。::T表示“T 类型”,因此这是调用 类型对象的定义Type{MyType{T}},即对象MyType{T}本身。Next{T}意味着它T是此定义的参数,并且它的值必须可用才能调用此定义。所以MyType{Int}匹配,但MyType不匹配。从这里开始,语法应该很熟悉了。

这种语法肯定有点繁琐和不直观,我们希望在该语言的未来版本(希望是 v0.6)中改进它。