Types 如何生成为参数类型字段创建默认值的构造函数

Types 如何生成为参数类型字段创建默认值的构造函数,types,constructor,julia,default-value,parametric-polymorphism,Types,Constructor,Julia,Default Value,Parametric Polymorphism,对于具有参数类型字段的类型,如: struct Point{T <: AbstractFloat} x::T y::T end struct Point{T这是否符合您的要求 julia> struct Point{T <: AbstractFloat} x::T y::T end julia> Point{T}() where T = Point{T}(zero(T), zero(T)) j

对于具有参数类型字段的类型,如:

struct Point{T <: AbstractFloat}
    x::T
    y::T
end

struct Point{T这是否符合您的要求

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))
julia>struct Point{T Point{T}(),其中T=Point{T}(零(T),零(T))
julia>点{Float64}()
点{Float64}(0.0,0.0)
julia>点{Float32}()
点{Float32}(0.0f0,0.0f0)
julia>点{Float16}()
点{Float16}(Float16(0.0),Float16(0.0))

如果您不介意添加额外的依赖项,则包
Parameters.jl
为宏
@提供了\u kw
,允许以以下方式指定默认值:

using Parameters
@with_kw struct Point{T <: AbstractFloat}
  x::T = 0.0
  y::T = 0.0
end

julia> Point()
Point{Float64}
  x: Float64 0.0
  y: Float64 0.0

julia> Point{Float32}() 
Point{Float32}
  x: Float32 0.0f0
  y: Float32 0.0f0
使用参数
@带结构点{T点()
点{Float64}
x:64 0.0
y:64 0.0
julia>点{Float32}()
点{Float32}
x:32 0.0f0
y:32 0.0f0