我正在尝试对一组对象进行排序,其中s类有一个名为some_method
的实例方法,该方法在Model of S中定义,返回值v。
def some_method(id)
...
return something # a float number
end
类S与具有many_to_many关系的类C相关。 (C类has_many s和S类has_many c)。我通过调用C.find(c_id).s
来获取这组s对象我正在尝试这样的事情
C.find(c_id).s.sort{|a,b| a.some_method(id) <=> b.some_method(id)}
但我无法对数组进行排序。我该怎么做?
答案 0 :(得分:0)
您正在使用PAPER=Thesis
CODES=$(wildcard ../figures/gnuplot_codes/*.gp) # list of all gnuplot scripts
EPSES=$(wildcard ../figures/figs/*.eps) # list of all eps files
FIGTEX=$(wildcard ../figures/figs/*.tex) # list of all associated tex files
all: $(EPSES) $(FIGTEX) $(CODES) $(PAPER).pdf
evince $(PAPER).pdf
# This is the line I can't figure out ---
# if any of the gnuplot codes are updated it runs all of them
$(EPSES) $(FIGTEX): $(CODES)
gnuplot $(CODES)
# compiles the latex document using latexmk
$(PAPER).pdf: $(PAPER).tex $(EPSES) $(FIGTEX) $(CODES)
latexmk -latex="latex -interaction=nonstopmode" -use-make $<
dvips $(PAPER).dvi -Ppdf
ps2pdf $(PAPER).ps
# This catches any missing *.eps files thrown back from latexmk
# I feel like I should have a way of checking before
# running $(PAPER).pdf rule
../figures/figs/%.eps: ../figures/gnuplot_codes/%.gp
gnuplot $<
# same as the rule above but for *.tex
../figures/figs/%.tex: ../figures/gnuplot_codes/%.gp
gnuplot $<
# this cleans all the latex files
clean:
latexmk -CA
运算符,但似乎正在返回浮点数。这不是运营商需要有效排序的。 (Read more about that operator here)
我建议您使用sort_by
<=>
这将对方法C.find(c_id).s.sort_by{ |element| element.some_method(id) }
上的数组s
进行排序,假设您传入了some_method
。根据id
的不同,您可能需要在这个区块之外定义它。