【问题标题】:comparison by wrapper type in julia在 Julia 中按包装器类型进行比较
【发布时间】:2020-10-27 06:02:34
【问题描述】:

我有一堆具有层次结构的参数单例结构,我需要建立一个比较操作来确定这些单例的列表是否是“唯一的”。其中比较主要(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

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

【问题讨论】:

  • all Array{Int64,N} where N 类型是否与此函数相等?那么两个Tuple 参数呢——它们也比较相等吗?您的实现似乎表明了这一点。
  • 是的,基本上比 isequal 更严格,主要用于比较单例

标签: types julia


【解决方案1】:

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

julia> nameof(Vector{Int})
:Array

julia> nameof(Matrix{Float64})
:Array

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

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多