如何在 julia 中堆化类型数组

How to heapify array of types in julia

julia 中,我创建了给定类型:

type Event
  clientNumber
  time
end

然后我创建了一个数组,其中元素的类型为 Event:

e1 = Event(1, 12)
e2 = Event(2, 13)
e3 = Event(3, 2)
events = [e1, e2, e3]

我的问题是:如何按 Event 类型的字段 time 堆化这个数组?如果它只是 Int's 的简单数组,它看起来就像这样:

arr = [4, 3, 21, 54, 1]
Collections.heapify!(arr)

但我不知道如何在堆中比较这些事件。

代码:

Collections.heapify!(events)

returns 错误:

MethodError: no method matching isless(::Event, ::Event)

解决问题的一种方法是定义 Julia 抱怨的方法,如下所示:

Base.isless(a::Event,b::Event) = isless(a.time,b.time)

现在,Collections.heapify!(events) 应该可以了。