vieweditattachhistoryswikistopchangessearchhelp

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 などを送信して)まあ使うのは、
リテラル式やメッセージ式の常套句で暗示的に new して使うのは、
as して使うのが
作ってどうこうはしないけど、日頃お世話になっているので見知っているのが、
なお、セマフォとコンパイルメソッドはコレクションと意識して使うことはないですね。--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 にミックスインがあったなら(あくまで仮定で、個人的にはそれを望んでいるわけではありません)
クラスとしてはなくても済ませらるものもかなりありそうですね。
とか。--sumim



あれ?(単一)継承万歳も望まず、ミックスインも望まない、となると、どういう形をお望みですか?
まさか、C++みたいな無策多重継承や、javaみたいなInterfaceしか多重継承できない世界、を望んでるとか? --戯


Bag がらみで、Bag ってあまり使わないなぁ…というか存在意義をあまり認めていないなぁ…と
思っていたのですが、Bag >> #sortedCounts の使いかたを見てちょっと考えを改めました。
ちょっとですけど(笑)。これもある種の目からウロコでしょうか(^_^;)。--summ



日本語って難しいですね。
万歳論を展開する気はないと言いたかったのです。
継承の難点は明らかだけど、それで Smalltalk の他の良い部分が失われずに済むなら、
Smalltalk を好んで使う以上、それは甘受します。

ここでは、数は多いけれど Smalltalk のクラスライブラリの特徴のひとつである
コレクションクラスサブクラス群を肴に、
なんて話ができれば、と思ったのですが。--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)


Congratulations! 以下の 2 ページから参照されています。

This page has been visited 4258 times.