Julia中如何获取数据类型?仅返回Vector而非Vector{Int64}的方法
Julia提取参数化类型外层类型的方法
有,你可以通过以下两种常用方式实现需求:
方法1:使用Base.typename直接获取(推荐)
该方法是Julia官方提供的底层接口,稳定性高,适用于所有参数化类型,示例如下:
# 定义测试向量 julia> x = [1, 2, 3] 3-element Vector{Int64}: 1 2 3 # 原有typeof返回带参数的完整类型 julia> typeof(x) Vector{Int64} # 获取外层类型对象 julia> Base.typename(typeof(x)).wrapper Vector # 若需要返回字符串格式的"Vector",直接转换即可 julia> string(Base.typename(typeof(x))) "Vector"
方法2:封装自定义工具函数
如果需要高频使用该功能,可以自己封装一个通用函数,适配所有类型的输入:
# 定义函数 outer_type(T::DataType) = Base.typename(T).wrapper outer_type(x) = outer_type(typeof(x))
调用效果:
julia> outer_type([1,2,3]) Vector julia> outer_type(Dict("a" => 1)) Dict julia> outer_type(zeros(2,3)) Matrix
注意事项
- 不推荐使用字符串切割的取巧方式(例如
split(string(typeof([1,2,3])), '{')[1]),虽然临时调试时可以得到正确结果,但正式代码中Base.typename的兼容性和运行效率更高。 - 以上方法对所有Julia参数化类型都有效,不限于Vector类型。
内容的提问来源于stack exchange,提问作者CHIA YI
相关产品推荐
相关产品推荐

