gpt4 book ai didi

ruby - 在 ruby​​ 中排序列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:10 25 4
gpt4 key购买 nike

我有以下类(class) Linea

class Linea
include Comparable
attr_accessor :maxcap, :capatuale, :citta1, :citta2, :lineac

def initialize(c1, c2, maxc)
raise CapacitaIllegale if maxc <= 0
@maxcap = maxc
@capatuale = maxc
@citta1 = c1
@citta2 = c2
@lineac = []
@lineac.push(c1)
@lineac << c2
end

def <=> (l)
if(l.is_a?(Linea))
if (l.maxcap>@maxcap)
return l.maxcap
end
if(l.maxcap==@maxcap)
if (l.citta1.pop + l.citta2.pop>@citta1.pop+@citta2.pop)
return l.maxcap
end
end
end
return -1
end
end

在 Rete 类中我想插入 Linea 并使用 <=> 进行排序之后;

  class Rete
attr_accessor :lineec, :guasto_seg

def initialize()
@rete = []
@guasto_seg = []
end

def aggiungi_linea(c1, c2, maxc)
l = Linea.new(c1, c2, maxc)
unless (citta_presente(c1, c2))
@rete << l
@rete.sort { |l1,l2| l1<=>l2 if l1.is_a?(Linea) and l2.is_a?(Linea) }
else
raise LineaGiaEsistente
end
end

+ some diferent method

end

我想问一下它是如何用于排序的解释,如果我的是正确的,如果 <=> 完成并调用排序那么正确。??????请尽快给我答复,谢谢。

最佳答案

为了有助于排序,<=>方法必须像这样:

big_linea <=> small_linea #=> 1
big_linea <=> equally_big_linea #=> 0
small_linea <=> big_linea #=> -1

当它起作用时,你应该能够做到

@rete.sort #no block needed

关于ruby - 在 ruby​​ 中排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com