如何在错误消息中显示类型别名而不是参数类型

科林·T·鲍尔斯

我在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类型别名错误

来自分类Dev

如何从类型别名提取类型实参和类型参数引用其他类型别名?

来自分类Dev

如何从类型别名提取类型实参和类型参数引用其他类型别名?

来自分类Dev

如何在Go中强制转换为类型别名?

来自分类Dev

如何在Swift中“生成”闭包类型别名?

来自分类Dev

如何在TypeScript中声明全局类型别名?

来自分类Dev

如何在Flutter中创建类型别名?

来自分类Dev

如何创建类型别名

来自分类Dev

如何检测类型别名?

来自分类Dev

Rust中的类型别名

来自分类Dev

Scala中的类型别名

来自分类Dev

TypeScript中的类型别名

来自分类Dev

Scala 中的类型别名

来自分类Dev

如何在Swift中将类型别名作为函数参数传递?

来自分类Dev

如何从类型别名确定类型?

来自分类Dev

Bifunctors的参数化类型别名

来自分类Dev

如何使用mgo从文档中解组命名类型别名?

来自分类Dev

从Scala中的类型别名创建对象

来自分类Dev

类型别名在类中做什么?

来自分类Dev

Go中通道的类型别名很奇怪

来自分类Dev

类型别名在类中做什么?

来自分类Dev

Haskell中的多态类型别名

来自分类Dev

对象中的Scala类型别名

来自分类Dev

Swift 中的类型别名闭包

来自分类Dev

具有类型参数的Scala类型别名

来自分类Dev

> 2个类型参数的Scala中缀类型别名?

来自分类Dev

类型别名与类型相同

来自分类Dev

如何在不重复类型的情况下定义函数类型别名的值?

来自分类Dev

如何在不重复类型的情况下定义函数类型别名的值?