我正在尝试处理一些代码,这是我遇到的错误。
TypeError: in Type, in parameter, expected Type got xyz
任何人都可以向我解释理论上会导致这种情况发生的原因吗? 此错误消息对我没有任何帮助。 谢谢!
最佳答案
出现此错误的一种方法如下。
假设您已经定义了一个(非平凡的)类型 XYZ
:
julia> struct XYZ
x :: String
end
和这种类型的一个实例:
julia> xyz = XYZ("foo")
XYZ("foo")
您可以使用 typeof
函数获取对象 xyz
的类型(即 XYZ
):
julia> typeof(xyz)
XYZ
同样的方法可以得到XYZ
本身的类型:
julia> typeof(XYZ)
DataType
但是,这将为所有类型返回 DataType
,这在想要分派(dispatch)某个类型的类型时不是很有用。对于这些情况,存在 Type
"singleton type" .我想我也看到它被称为“伪类型”,我觉得这很容易理解:一切都像 XYZ
类型本身就是 Type{XYZ} 类型一样工作
:
julia> XYZ isa Type{XYZ}
true
julia> f(::Type{XYZ}) = 42
f (generic function with 1 method)
julia> f(XYZ)
42
但是,有一件事您不能做:以这种方式构建本身不是类型的对象的伪类型:
julia> Type{xyz}
ERROR: TypeError: in Type, in parameter, expected Type, got XYZ
Stacktrace:
[1] top-level scope at REPL[3]:1
总而言之,您可能在对象 xyz
上使用了类似 Type{xyz}
的东西,而您真正想要的是以下之一:
Type{XYZ}
指类型XYZ
本身的(伪)类型typeof(xyz)
获取对象类型xyz
关于julia - 参数中的 TypeError : in Type, 是什么意思,预期类型在 Julia 中得到了 xyz 意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60441140/