如果我有一组员工,如何根据员工姓氏进行排序?
问问题
4320 次
2 回答
6
应该是这样的:
employees sortBy: [:a :b | a lastName > b lastName]
于 2009-10-07T00:09:57.167 回答
6
如果我们做出这些假设:
- Array 实例保存在名为employees的变量中
- Array 包含一个实例集合,这些实例都通过返回一个 String 实例来响应lastName消息
- 您想按升序对集合进行排序
然后您可以使用以下代码片段完成工作:
employees asSortedCollection: [ :a :b | a lastName < b lastName ]
此代码将asSortedCollection:关键字消息发送到名为employees的 Array 实例。它传入由方括号分隔的 Block 实例,作为该关键字消息的参数。传入的 Block 有两个参数,分别命名为a和b,并且在 | 之前都用前面的冒号字符标记。特点。| 之后的块内的代码 然后将使用字符对雇员数组中的所有元素进行排序,并将它们添加到类 SortedCollection 的新实例中。
但请注意,此代码最终会返回一个新集合,该集合包含员工也持有的相同项目,但现在按所需顺序。事实上,新集合保留了排序标准(用作asSortedCollection:消息参数的 Block 实例),并且当您将来向该集合添加更多实例时,它们将自动以正确的排序顺序插入。
于 2009-10-31T01:02:39.950 回答