我在julia中建立了一个参数类型:
type MyType{T}
x::T
end
为了简单起见,我为以下对象构建类型别名Float64
:
typealias MT MyType{Float64}
我现在故意造成涉及的错误MT
。例如:
y1 = MyType(1.0)
y2 = MyType(2.0)
y1 + y2
由于+
未为定义,因此将引发错误MyType
。错误消息显示:
`+` has no method matching +(::MyType{Float64}, ::MyType{Float64})
我想说:
`+` has no method matching +(::MT, ::MT)
为什么?因为现实世界中的示例有时会比这个玩具示例复杂得多,并且类型别名的一个目的是使参数类型的复杂特定实例易于识别。因此,也很容易使它在错误消息中易于识别。
我尝试了什么?我最好的猜测是,错误函数string
通过a调用该函数DataType
,以便在错误消息中生成适当的字符串。因此,对于我来说,可以string
通过多次分派扩展功能以专门研究类型别名不是很明显,因此我对从何处去很困惑。
您需要定义适当的show
方法:
import Base.show
show(io::IO, ::Type{MT}) = print(io, "MT")
然后,您的示例给出:
julia> y1 + y2
ERROR: `+` has no method matching +(::MT, ::MT)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句