2009-10-06 57 views

回答

6

應該是這樣的:

employees sortBy: [:a :b | a lastName > b lastName] 
5

如果我們做出以下假設:

  1. 的陣列實例在一個名爲變量舉行員工
  2. 數組中存放的實例集合通過返回字符串實例,所有人都回應姓氏
  3. 你要以升序排序的集合

然後你可以用下面的代碼片段做的工作:

employees asSortedCollection: [ :a :b | a lastName < b lastName ] 

此代碼發送asSortedCollection:關鍵字消息給Array實例名爲僱員。它傳入Block實例,由方括號分隔,作爲該關鍵字消息的參數。傳入的塊有兩個參數,分別命名爲ab,並由前面的冒號字符標記,字符。 Block內的代碼在|之後字符將用於對員工數組中的所有元素進行排序,並將它們添加到SortedCollection類的新實例中。

但請注意,此代碼最終會返回一個新集合,該集合包含員工所持有的相同項目,但現在按照所需順序。實際上,新的集合會保留到排序條件(Block實例被用作消息的參數asSortedCollection:消息),並且在將來向該集合添加更多實例時,它們將自動插入正確的排序訂購。