如何解决如何制作为参数类型字段创建默认值的构造函数
对于具有参数类型字段的类型,例如:
struct Point{T <: AbstractFloat}
x::T
y::T
end
如何创建一个外部构造函数来创建具有所需类型的默认值?例如,我想要 Point()
不带任何参数来创建 Point{T}(0.0,0.0)
,我仍然可以通过某种方式将 T
指定为 Float64
或其他类型。
解决方法
这符合您的要求吗?
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))
,
如果您不介意添加额外的依赖项,包 Parameters.jl
提供了宏 @with_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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。