如何制作为参数类型字段创建默认值的构造函数
对于具有参数类型字段的类型,例如:
struct Point{T <: AbstractFloat}
x::T
y::T
end
如何制作一个使用所需类型创建默认值的外部构造函数?例如,我想要Point()which 不带任何参数来 create Point{T}(0.0, 0.0),我仍然可以通过某种方式指定TasFloat64或其他类型。
回答
这是你想要的吗?
julia> struct Point{T <: AbstractFloat}
x::T
y::T
end
julia> Point{T}() where T = Point{T}(zero(T), zero(T))
julia> Point{Float64}()
Point{Float64}(0.0, 0.0)
julia> Point{Float32}()
Point{Float32}(0.0f0, 0.0f0)
julia> Point{Float16}()
Point{Float16}(Float16(0.0), Float16(0.0))