首页 > 解决方案 > 在 Julia 中按包装器类型进行比较

问题描述

我有一堆具有层次结构的参数单例结构,我需要建立一个比较操作来确定这些单例的列表是否是“唯一的”。其中比较是在主要(o 包装器)类型之间,忽略参数类型,使用ArrayTuple类型以及和所需的功能myequal

myequal(Array{Int64,1},Array{Int64,2}) #true, because both are Arrays
myequal(Array{Int64,1},Tuple{Int64,Int64}) #false

定义 myequal 的一种选择是使用类型的内部字段

function myequal(a::Type,b::Type)
  ta = a.name
  tb = b.name
  return ta == tb
end

但是不推荐使用内部未记录的字段。有没有规范的方法来做到这一点?

标签: typesjulia

解决方案


nameof(myType)返回 a Symbol ,其类型名称正是您所需要的。

julia> nameof(Vector{Int})
:Array

julia> nameof(Matrix{Float64})
:Array

现在您可以使用这些Symbols 进行比较。


推荐阅读