types - julia 子类型化参数父类(super class)型时类型不正确

标签 types julia

我有一个抽象类型

abstract type PointND{N<:Integer, T<:Number} end

当我对它进行子类型输入时,设置 N=1
struct Point1D{T} <: PointND{1, T}
    x::T
end

Julia 抛出错误
ERROR: TypeError: in PointND, in N, expected N<:Integer, got Int64

即使 (typeof(1)<:Integer) == true .

即使在 N 时也会发生这种情况类型为 Number .为什么这不起作用?

最佳答案

您的 N这里不是 Integer 的子类型,但是 Integer 的子类型的实例.如果你真的尝试 1 <: Integer在 REPL 中,它会抛出错误。所以 PointND 将只接受子类型 Integer 的类型, 喜欢 IntUInt ,但不是 Integer 的子类型的实例喜欢 10xff .这里的解决方案实际上只是不限制 N 的类型并清楚地记录在案 N应该总是一个整数。目前没有任何方法可以限制类型参数中位类型的实例类型。

关于types - julia 子类型化参数父类(super class)型时类型不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61659581/

相关文章:

types - 单数据类型与双数据类型

dataframe - 如何对 julia DataFrame 中的分组记录进行分组和排名

julia - 以非交互方式将函数参数传递给 Julia

dataframe - Julia 数据帧 : create new column of arrays based on other columns

c# - 在 VB、C# 中使用 Linq 处理匿名类型

c - 在 C 中,如何将 String 类型和 int 类型存储在同一个变量中?

python - 在 Python 类中存储和断言类型

c# - 给定一个类型和一个字符串,您可以尝试将字符串转换为该类型而不询问类型吗?

julia - 如何在 Julia 中定义二叉搜索树的类型?

sockets - Julia中有关套接字通信的其他数据