Julia中如何获取参数化类型的不带参数的简单名称?
解决方法
方法1:直接提取结构体名称字符串
仅需要从实例中提取MyStruct字符串的话,直接用Julia内置的nameof函数即可:
# 针对你的实例z,执行以下代码 struct_name = string(nameof(typeof(z))) # 输出结果为 "MyStruct"
nameof会返回类型对应的Symbol值,转字符串后就是你需要的纯结构体名称。
方法2:自定义show方法全局修改类型显示效果
如果你希望后续所有查看MyStruct类型的场景(包括typeof输出、REPL类型提示)都只显示MyStruct而不带泛型参数,可以重写对应的Base.show方法:
# 重写类型的显示逻辑 Base.show(io::IO, ::Type{<:MyStruct}) = print(io, "MyStruct") # 可选:同时自定义实例的显示格式,按需调整 Base.show(io::IO, x::MyStruct) = print(io, "MyStruct(a=$(x.a), b=$(x.b))")
添加上述定义后,再执行typeof(z),输出就会变成你期望的MyStruct。
内容的提问来源于stack exchange,提问作者Alec
相关产品推荐
相关产品推荐

