- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
<分区>
我正在实现自定义排序。有飞船运算符(operator)<=>
处理数组排序:
myArray.sort { |a, b| a <=> b }
a <=> b
返回 1
什么时候b
大于 a
, 并且交换两个元素。a <=> b
返回 0
什么时候a
等于 b
, 两个元素留在原来的位置。a <=> b
返回 -1
什么时候a
小于 b
, 两个元素留在原来的位置。所以我测试了一个例子:
myArray = [2, 1, 7, 9, 3, 8, 0]
myArray.sort { |a, b| 1 <=> 1 } # making it always return 0
#=> [9, 1, 7, 2, 3, 8, 0]
结果不是我所期望的。在我的预料中,当飞船运算符(operator)返回时 0
,每个元素都会留在原来的位置。因为飞船操作符总是返回 0
在上面的例子中,数组应该保持原样。但是,结果与原始数组不同。
我有什么误解吗?
更新:
以下是我上述问题的来源。最初我试图按对象的属性对对象进行排序(假设属性为 status
)。
例如
myObjects = [obj1, obj2,..., objn] # the objects are ordered by create_time already
myObjects.sort{|a,b|
case a.status
when 'failed'
x = 1
when 'success'
x = 0
when 'pending'
x = -1
end
case b.status
when 'failed'
y = 1
when 'success'
y = 0
when 'pending'
y = -1
end
x <=> y # compare two objects (a and b) by the status
}
myObjects
按 created_time
订购已经,但我想按每个对象的 status
再次对其进行排序.
例如,
两个对象具有相同的created time
(这里只考虑小时和分钟,忽略秒)将再次按状态排序,使对象带有 failed
状态放在数组的末尾。
x
和 y
上面代码中的值将取决于对象的状态,和 x
y
比较决定顺序。如果两个对象的状态相等 ( x == y
),则元素应保持在同一位置,因为它们按 created_time
排序。已经,不需要再对它们进行排序。
当两个对象的状态都是success
时, x <=> y
将返回 0
.但是根据一些评论,比较值0
飞船运算符(operator)返回的似乎输出不可预测的顺序。如果myObjects
怎么办包含所有具有相同状态的元素?这将导致飞船运算符(operator)自 x == y
以来一直返回 0 .
在我的期望中,myObjects
应该保持相同的顺序,因为状态都是相同的,在我的情况下使用宇宙飞船运算符(operator)时应该如何更正?
非常感谢大家的帮助!
实际上,我正在编写一个小型太空射击游戏(2.5D,俯 View )。玩家可以沿着 XZ 轴移动并通过右侧的迷你摇杆(游戏 handle )旋转宇宙飞船或查看光标位置(键盘 + 鼠标)。 因此,运动和旋
这里是初级程序员,只是想了解Ruby背后的过程sort使用飞船操作符时的方法 .希望有人能帮忙。 在以下内容中: array = [1, 2, 3] array.sort { |a, b| a b
什么是 Ruby (宇宙飞船)运算符(operator)?该运算符是否由任何其他语言实现? 最佳答案 spaceship operator将返回 1、0 或 −1,具体取决于左侧参数相对于右侧参数的
我想在 window 的中央画一艘宇宙飞船,因为它在太空中提供动力。为了滚动世界窗口,我计算了飞船的新位置,并使用 glOrtho 将一个 4000x3000 的窗口居中。我的测试是按下前进按钮并向上
我是一名优秀的程序员,十分优秀!