如果我比較a
,b
和c
像這樣紅寶石可枚舉不能在分功能比較的BigDecimal的NaN
[a,b,c].min
其中
a = BigDecimal.new("NaN")
b = BigDecimal.new("NaN")
c = BigDecimal.new("0.0")
我得到:
ArgumentError: comparison of BigDecimal with BigDecimal failed
但如果我是使用ruby的Enumerable的比較運算符然後我得到這個:
irb(main):001:0> a <=> b
=> nil
irb(main):002:0> a <=> c
=> nil
並沒有錯誤呈現。這是Ruby中的問題,還是我誤解了min
,還有什麼我可以用來實現與不會爆炸的枚舉的min
相同的效果?
手動比較實際上不工作,因爲操作者宇宙飛船(<=>)是必需的,以返回'[-1,0,1]一個'以用作比較的。這就是爲什麼你看到比較失敗,因爲'nil'不是一個有效的結果。爲什麼你需要能夠找到包含'NaN'的數組的最小值?你能否拒絕這些價值觀? –
我現在只是照顧任何'NaN'反饋。我們從API獲取這些數據,因此我無法訪問我們收到的數據。 – TheLegend
在答案中增加了一些可能有所幫助的新信息。 – MarsAtomic