gpt4 book ai didi

types - 类型定义 : expected UnionAll, 得到 TypeVar

转载 作者:行者123 更新时间:2023-12-01 15:21:24 27 4
gpt4 key购买 nike

在 v0.6 的 Julia 手册中,我发现以下内容:

abstract type Pointy{T} end
struct Point{T} <: Pointy{T}
x::T
y::T
end

这很好用,我认为以下内容也应该:
abstract type Foo{V, F} end
struct Bar{V, F} <: Foo{V, F}
x::V{F}
end
Bar的定义但是,给出了以下错误
ERROR: TypeError: Type{...} expression: expected UnionAll, got TypeVar

有什么问题,我怎样才能实现我真正想要的,即指定 V<:AbstractVectorF<:AbstractFloat ?

最佳答案

尝试这个:

julia> abstract type Foo{T} end

julia> struct Bar{T<:AbstractFloat,V<:AbstractVector{T}} <: Foo{T}
x::V
end

julia> Bar{T}(v::AbstractVector{T}) = Bar{T,typeof(v)}(v) # constructor
Bar

julia> Bar(rand(3))
Bar{Float64,Array{Float64,1}}([0.387467, 0.535419, 0.240748])

julia> Bar(rand(Int, 3))
ERROR: TypeError: Bar: in T, expected T<:AbstractFloat, got Type{Int64}
Stacktrace:
[1] Bar(::Array{Int64,1}) at ./REPL[4]:1

关于types - 类型定义 : expected UnionAll, 得到 TypeVar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com