NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

Iterator patterns in Smalltalk

差出人: SHIMADA Keikiさん
送信日時 2001/09/19 23:40
ML.NO [DP/ML:1010]
本文:

こんにちは、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!!']

添付:
 読み込み中...

このメールは下記のメールに対する返信です:

このメールには下記のメールが返信されています:

【PR】壁紙メーリスレシピ無料ホームページ予定調整