Smalltalkの勉強

この本,説明を省略しすぎ...

第2章

  • Do it
  • Transcript
  • カスケード式
    Transcript
        cr;
        show: 'hoge'
  • inspect it
  • オブジェクトには "a" や "an" をつける習わし
  • "| hoge |" は変数識別子の宣言か? →そうみたい
  • object message: argument
  • ^object で戻り値? →そうみたい

第3章

  • サンプルコードに例外の仕組みが出てきた
  • 固定小数点数無理数(の近似値)を表現できないのかな?内部で分数として保持しているようなので.
  • 文字はUnicode(UTF-16)で保持
  • シンボル(#hoge)が出てきた.文字列との違いは同一性と同値性のチェックではっきりする
  • 文字列は記述される度にコピーされるが,シンボルは singleton になる
  • 配列のインデックスは 1 からなのか
  • 束縛参照は共有変数までお預けらしい
  • nil もオブジェクト,全てがオブジェクト
  • インスタンス変数(インスタンス固有?)とクラスインスタンス変数(クラスインスタンス固有?)
  • 名前空間もオブジェクト.親が子の名前空間オブジェクトを共有変数(シンボル)として束縛している
  • aBlock := [:a :b | statements].
    • 呼び出し:aBlock value: 'hoge' value: 777.
    • ブロッククロージャっていうのかな?
  • aNameSpace environment は親名前空間オブジェクトを示すみたい
  • #{hoge} はシンボル.というか "#" で束縛しているオブジェクトを参照することになる
  • Boolean クラスの and について
    • object and: argument
    • object が true ならば argument を評価する
  • コンテキストの sender,receiver,selector を正しく理解しないとだめだ
    • sender:メッセージの送信元オブジェクト>>メッセージ (メッセージはメッセージセレクタと引数で構成されている)
    • receiver:メッセージを受け取ったオブジェクト ("a Hoge" とか表示される)
    • selector:メッセージを構成するメッセージセレクタ (シンボル)
  • "#(1 2 3) copyFrom: 2 to: 4" について
    • #(1 2 3) → receiver
    • copyFrom: 2 to: 4 → メッセージ
    • copyFrom:to: → メッセージセレクタ
    • 2 と 4 → 2つの引数
  • 同じ相手にメッセージを送る場合はカスケードにする
    object
        message1;
        message2: a;
        message3: b to: c.
  • ブロックは"value:"や"value:value:"で引数を渡す
aBlock value: 1 value: 2
  • ブロックの評価は value メッセージで行う
  • 引用

オブジェクト指向プログラミングにおいて,プログラム制御構造はオブジェクトに合わせて新たに作り出すものであり,プログラミング言語が構文として用意するものではない

    • 自分はまだ青二才だ...orz