簡體   English   中英

Smalltalk系列

[英]Smalltalk collections

如果我有一系列員工,我如何根據員工的姓氏進行分類?

應該是這樣的:

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

如果我們做出這些假設:

  1. Array實例保存在名為employees的變量中
  2. Array包含一組實例,這些實例都通過返回String實例來響應消息lastName
  3. 您希望按升序對集合進行排序

然后,您可以使用以下代碼片段完成工作:

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

此代碼將asSortedCollection:關鍵字消息發送到名為employees的Array實例。 它將Block實例(由方括號分隔)作為該關鍵字消息的參數傳遞。 傳入的Block有兩個名為ab的參數,並且在|之前都有前面的冒號字符標記 字符。 |之后的塊內的代碼 然后,將使用character對employees數組中的所有元素進行排序,並將它們添加到SortedCollection類的新實例中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM