Smalltalk の文法
リテラル
- 整数:123
- 浮動小数点数:1.23、1.2e-3
- 分数:1/2
- 文字列:'abcdefg'、'Mike''s car' (注 シングルコート2つでシングルコート1文字)
- 文字:$a
- シンボル:#abc
- 集合オブジェクト:#(1 2.3 4/5 'abc' $d #efgh)
- 定数:true、false、nil
変数
- 一時変数、局所変数:| | で囲むことで変数宣言。(例 |abc def| 2つの変数 abc と def の使用を宣言)
- インスタンス変数:インスタンスごとに存在する変数。小文字で始まる表記。オブジェクト定義時に宣言。(instanceVariableNames: 'ab cd')
- クラス変数:クラスごとに存在し、サブクラスからアクセス可能な変数。大文字で始まる表記。オブジェクト定義時に宣言。(classVariableNames: 'Ab Cd')
- クラスインスタンス変数:クラスごとに存在し、サブクラスからアクセス不可能な変数。大文字で始まる表記。オブジェクト定義時に宣言。
- プール変数:大域変数よりスコープの狭い変数。オブジェクト定義時に宣言。(poolDictionarys: 'Abcde')
- 大域変数:常に大文字で表記。
- 擬似変数:self、super
メッセージ
- 引数なし:〈オブジェクト〉 〈メッセージ〉
- 1引数:〈オブジェクト〉 〈:つきメッセージ〉 〈引数〉
- 2引数:〈オブジェクト〉 〈:つきメッセージの一部〉 〈引数〉 〈:つきメッセージの一部〉 〈引数〉
- カスケーディング:1つのオブジェクトに複数のメッセージを別々に送る 〈オブジェクト〉〈メッセージ1〉; 〈メッセージ2〉
- メッセージの終端:.(ピリオド)
代入
メッソドの返り値
- 指定するとき:^〈オブジェクト〉
- 指定しないとき:自動的に self が返される。
ブロック
- 引数なし:[ ... ]
- 引数あり:[ 〈:つき変数名〉 ... | ... ]
- 局所変数あり: [ | 宣言部 | ... ]
2005.4.11 by tokuhisa