Ruby:排序可能包含nil的多维数组有时会失败

前端之家收集整理的这篇文章主要介绍了Ruby:排序可能包含nil的多维数组有时会失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的一个项目中发现这个例子是一个失败的测试.为什么这样做:
[[1,2,3],[2,3,4],[1,1,nil]].sort
#=> [[1,nil],4]]

但这不是:

[[1,[nil,nil]].sort
#=> ERROR: ArgumentError: comparison of Array with Array Failed

经测试的Ruby版本:2.0.0,1.9.3.

解决方法

它是失败的,因为它是零的.第一个测试示例不会失败的原因是因为1,1的比较发生在1,2之间.由于不需要,因此不会进行无效验证.

以下示例失败,因为它最初必须过零.尝试在irb:

[1,nil,2].sort
ArgumentError: comparison of Fixnum with nil Failed

# in this example 1,2 comes before 2,1 so no need to continue in sort
# and nil is never reached
[ [2,5],6] ].sort
 => [[1,6],5]]

猜你在找的Ruby相关文章