如果我有一系列员工,我如何根据员工的姓氏进行分类?
答案 0 :(得分:6)
应该是这样的:
employees sortBy: [:a :b | a lastName > b lastName]
答案 1 :(得分:6)
如果我们做出这些假设:
然后,您可以使用以下代码片段完成工作:
employees asSortedCollection: [ :a :b | a lastName < b lastName ]
此代码将 asSortedCollection:关键字消息发送到名为 employees 的Array实例。它将Block实例(由方括号分隔)作为该关键字消息的参数传递。传入的块有两个名为 a 和 b 的参数,并且在前面的冒号前面都标有|字符。 |之后的块内的代码然后,将使用字符对 employees Array中的所有元素进行排序,并将它们添加到SortedCollection类的新实例中。
但请注意,此代码最终会返回一个新集合,该集合包含 employees 所拥有的相同项目,但现在按所需顺序。实际上,新的集合保留了排序条件(用作 asSortedCollection:消息的参数的Block实例),并且当您将来向该集合添加更多实例时,它们将自动成为以正确的排序顺序插入。