跳到主要内容

Julia 构造函数

阐述

创建新 Julia 复合类型的实例函数,并以该类型的名称为名。默认情况下该函数自动具备一个内构造方法。我们可以定义自己的内构造或外构造方法,但如果定义了内构造方法,则默认的内构造方法将取消。

内构造方法

在复合类型内部定义,通过调用 new 函数产生新的实例。new 调用时不必提供所有的值,产生一个未完全初始化的结果:

  • 在该方法内部用于定义某些自引用的类型
  • 可以返回未初始化的值或传给其他函数进行初始化

在调用 new 函数时,如果类型与对应字段类型不符合,将会 Julia 转换到指定类型。

外构造方法

在类型的外部定义新的方法并通过调用现有的构造函数实现。

实例

外构造方法:用于方便性

julia> struct Foo
bar
baz
end

julia> foo = Foo(1, 2)
Foo(1, 2)

julia> Foo(x) = Foo(x,x)
Foo

julia> Foo(1)
Foo(1, 1)

内构造方法:用于不变量和不完全初始化

julia> struct OrderedPair
x::Real
y::Real
OrderedPair(x,y) = x > y ? error("out of order") : new(x,y)
end

julia> mutable struct SelfReferential
obj::SelfReferential
SelfReferential() = (x = new(); x.obj = x)
end

性质

相关内容

参考文献