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