| 件名: | Iterator patterns in Smalltalk |
|---|---|
| MLNo. | [DP/ML:1010] |
| 差出人: | SHIMADA Keikiさん |
| 送信日時: | 2001/09/19 23:40 |
| 本文: | こんにちは、Cakeと申します。
イテレータパターンを、現在入門中のSmalltalkで書いてみました。Ruby と同じ ように、内部イテレータを使っています。メソッド名なども Smalltalk の慣習 に合わせました。 Smalltalkのソースコードはシーケンシャルなテキストファイルではないのです が、クラス定義、インスタンスメソッド定義、メタクラス定義、クラスメソッド 定義の順番で並べてみました。メソッド定義の前には "クラス>カテゴリ>メッセージセレクタ" というコメントをつけています。 (Smalltalkでは二重引用符 "..." がコメントになります。) # なにぶん入門中の身の上なので、おかしなことを書いているかもしれません。 # お気づきの点はご指摘頂ければ幸いです。 "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " Object subclass: #Book instanceVariableNames: 'name ' classVariableNames: '' poolDictionaries: '' category: 'Patterns-Example' "Book>initialize-release>initialize:" initialize: aString name := aString "Book>accessing>name" name ^ name "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " Book class instanceVariableNames: '' "Book class>instance creation>new:" new: aString ^ self new initialize: aString "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " Object subclass: #BookShelf instanceVariableNames: 'books ' classVariableNames: '' poolDictionaries: '' category: 'Patterns-Example' "BookShelf>initialize-release>initialize:" initialize: anInteger books := OrderedCollection new: anInteger "BookShelf>accessing>add:" add: aBook books add: aBook "BookShelf>accessing>at:" at: anInteger ^ books at: anInteger "BookShelf>accessing>size" size ^ books size "BookShelf>enumerating>do:" do: aBlock books do: [:each | aBlock value: each] "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " BookShelf class instanceVariableNames: '' "BookShelf class>instance creation>new:" new: anInteger ^ self new initialize: anInteger "BookShelf class>examples>examples" example "BookShelf example." | aBookShelf | aBookShelf := BookShelf new: 4. aBookShelf add: (Book new: 'Around the World in 80 Days'). aBookShelf add: (Book new: 'Bible'). aBookShelf add: (Book new: 'Cinderella'). aBookShelf add: (Book new: 'Daddy-Long-Legs'). aBookShelf do: [:each | Transcript show: each name; cr]. ^ aBookShelf -- SHIMADA, Keiki (島田慶樹) cake-smd@… http://www.ops.dti.ne.jp/~cake-smd/ Smalltalk allBehaviorsDo:[:each | each praise: 'Halleluja!!'] |
|---|---|
| 設定タグ: | |
| 添付: |
このMLトピックは下記のMLトピックに対するレス(返信)です:
このMLトピックには下記のMLトピックがレス(返信)されています:
読み込み
中...| <<1009:再利用可能性はフォースの 1つ | 1011:Re: [DP/ML:1010] Iterator patterns in Smalltalk>> |










