Squeak の Collection クラスとそのサブクラス
Collection
Bag
IdentityBag
CharacterSet
SequenceableCollection
ArrayedCollection
Array
ActionSequence
DependentsArray
WeakActionSequence
WeakArray
Array2D
B3DPrimitiveVertexArray
Bitmap
ByteArray
CompiledMethod
ExternalAddress
UUID
ColorArray
DirectoryEntry
FloatArray
B3DFloatArray
B3DColor4
B3DExponentTable
B3DInplaceArray
B3DColor4Array
B3DIndexedQuadArray
B3DIndexedTriangleArray
B3DRotationArray
B3DTexture2Array
B3DVector2Array
B3DVector3Array
B3DLightAttenuation
B3DMaterialColor
B3DMaterial
B3DPrimitiveLight
B3DMatrix4x4
B3DRotation
B3DVector2
B3DVector3
B3DVector4
B3DViewingFrustum
KlattFrame
IntegerArray
PointArray
RunArray
ShortIntegerArray
ShortPointArray
ShortRunArray
SoundBuffer
String
Symbol
Text
TranslatedMethod
WordArray
WordArrayForSegment
Heap
Interval
TextLineInterval
LinkedList
Semaphore
MappedCollection
OrderedCollection
GraphicSymbol
SortedCollection
CRLookupResult
UrlArgumentList
SourceFileArray
StandardSourceFileArray
Set
Dictionary
HtmlAttributes
IdentityDictionary
SystemDictionary
Environment
SmalltalkEnvironment
LiteralDictionary
MethodDictionary
PluggableDictionary
WeakKeyDictionary
ExternalFormRegistry
WeakIdentityKeyDictionary
WeakValueDictionary
IdentitySet
PluggableSet
WeakSet
SkipList
IdentitySkipList
WeakRegistry
改めてみると、たくさんありますね(笑)。
これをぜんぶ覚えようと思って開いてみたらきっと面くらうでしょうね。--sumim
私が明示的にして( new などを送信して)まあ使うのは、
- OrderedColleciton
- Array2D
- Set
- Dictionary
- Semaphore
リテラル式やメッセージ式の常套句で暗示的に new して使うのは、
- String ( 'string' )
- Symbol ( #symbol )
- Array ( #() 、 {} )
- Interval ( 1 to: 10 )
as して使うのが
作ってどうこうはしないけど、日頃お世話になっているので見知っているのが、
- RunArray ( Text のスタイル情報など)
- SystemDictionary ( グローバル変数の Smalltalk )
- CompiledMethod ( Integer >> #factorial )
なお、セマフォとコンパイルメソッドはコレクションと意識して使うことはないですね。--sumim
このページの各Classに突っ込み書こうと思ったら、どういうFormatがいいかなあ?…
とりあえずメモ。 "ruby 言語 bag クラス"でGoogleして2番目くらいに出てきた、
[ruby-list:9019] あなたのウロコみせてください(Re: FAQ)ってのが楽しいです。
あ。「Array は Queue も Stack も Set も兼ねても良い」「OOPってのは継承するコトじゃない」
辺りに注目ね。他は(ここでは)どうでもいい(^^;
(たとえば「Smalltalk ほど極端」は上記では制御構造をMessageとかBlockで実現することの是非「しか」語ってないので、ここでは置いとく。
ちなみにRubyは作りつけのif構文とかは有るが、if相当品をBlockで自作出来る。最適化はされまいが。) --戯
いちおう確認しておきたいのですが「(単一)継承万歳」論をここで展開する気は毛頭ありません。
し、いくら莫迦とはいえ、私もそこまで莫迦ではありません。念のため。--sumim
Smalltalk にミックスインがあったなら(あくまで仮定で、個人的にはそれを望んでいるわけではありません)
クラスとしてはなくても済ませらるものもかなりありそうですね。
- Weak シリーズ (束縛をガベージコレクタが感知しない)
- Identity シリーズ (Set 系で要素の要不要判定に他の要素との #= ではなく #== を使用)
- Sorted シリーズ (常に指定規則順)
- B3D (Ballon3D、3D 描画用クラス) シリーズ
とか。--sumim
あれ?(単一)継承万歳も望まず、ミックスインも望まない、となると、どういう形をお望みですか?
まさか、C++みたいな無策多重継承や、javaみたいなInterfaceしか多重継承できない世界、を望んでるとか? --戯
Bag がらみで、Bag ってあまり使わないなぁ…というか存在意義をあまり認めていないなぁ…と
思っていたのですが、Bag >> #sortedCounts の使いかたを見てちょっと考えを改めました。
ちょっとですけど(笑)。これもある種の目からウロコでしょうか(^_^;)。--summ
日本語って難しいですね。
万歳論を展開する気はないと言いたかったのです。
継承の難点は明らかだけど、それで Smalltalk の他の良い部分が失われずに済むなら、
Smalltalk を好んで使う以上、それは甘受します。
ここでは、数は多いけれど Smalltalk のクラスライブラリの特徴のひとつである
コレクションクラスサブクラス群を肴に、
- Smalltalk を学ぶ(あるいは「お試し」するのに)どのクラスを知っていればよいか。
- なぜ String は Colleciton サブクラスで有り続けるか。
なんて話ができれば、と思ったのですが。--sumim
>Smalltalk を好んで使う以上、それは甘受する
それを言っちゃったらアライブな人たちと同轍では…?
>Bag
むしろ今回(^^;クラス継承ツリーを見て「(最初から入ってて)羨ましい」と思ったのがBagだったりします。
具体的なクラスよりも、こういう、抽象的というか根本的(?)な部分で「他と違う」機能を持ったクラスのほうが
羨ましく感じることが多いのかも知れない。
抽象度の高いクラスの理念を参考にして具象クラスを作るのは、単なる「理念の実装」でしかないので「楽」
(場合によっては「プレインストールクラスにしなくてもいいじゃん」と思ったりする)なんですが
もとの理念自体を新たに考えるのは、(そもそも思いつかないと手も足も出ないという意味で)「困難」です。 --戯
>Smalltalk を学ぶ(あるいは「お試し」するのに)どのクラスを知っていればよいか。
こんなページ発見しました。 Squeak Smalltalk: クラスリファレンス。まだ熟読してないけど、もしかして丁度良いかも。
>なぜ String は Colleciton サブクラスで有り続けるか。
改めてここのツリーを見て思ったのが、これってrubyでいえばむしろmodule Enumerableをincludeするクラスたち、という感じだなと。
各クラスは、相違部分だけを自分でコーディングしてしまえば、あとはinclude Enumerableするだけで、共通部分の実装が終ってしまう。
てなわけ(?)で、rubyのStringはinclude Enumerable済みなので、
要件(Smalltalk風に言えばCollectionのサブクラス「であること」)を満たしている、ってな感じなんじゃないかな。 --戯
Bag を具象クラスの例として「クラスの具象化と記述の抽象化」の話に進もうかと思ったのですが、
戯さんとしては、Bag は抽象クラスなんですか…。残念(^_^;)。--sumim
クラスの具象化と記述の抽象化というキーワードを提案。
Wikiなのに、「話を進める」という概念が出てくるとは、思いもよらない事でした。 --CUE
>Wikiなのに、「話を進める」という概念が出てくるとは
だからさ、つまりさ、ここ(の主催者さんの発想と運用)は、「Wikiではなく古典的掲示板」なんだよね(^^;。
ちなみに、Wikiという媒体形態(が成すと(俺が)期待してる世界)とは違うので、個人的には残念。
ページすなわちスレ、しかもスレの中でレスツリーが形成されない、という風に解釈すれば、
ここの運用はどちらかというと2ch掲示板方式に近いと思う。
つーわけで、Swikiじゃなく掲示板(ツリーなし、スレッドはユーザが建てれる)を運用するほうが良かったのでは? -戯
このページを編集 (7446 bytes)
|
以下の 2 ページから参照されています。 |
This page has been visited 4267 times.