].予め例外処理をメッセージに含めることで、単純な例外処理をより簡潔なものとしている。独自の復帰文と組み合わせる事でより柔軟な制御をする事ができる。次の処理は、連想配列に値が見つかればそれを表示し、値が無ければ何もしないという処理であるが、処理の中断の判定と連想配列からの値の取り出しを一度のメッセージ送信だけで実現している。value;cr.ブロックによる資源の開放[編集]Smalltalkでは、ブロック内だけ資源を確保しブロックの終了後に資源を開放するというブロックによる資源の開放が行われる。ブロックによる資源の開放では、資源の確保と同時に資源の開放を強制できるため開放忘れや例外による開放漏れを防ぐことができる。C#のusingに類似するが、usingを書き忘れたままnewできない分さらに強力である。反復処理のための基本構文を備えているが、ある値の生成器(入出力等)やある集合要素から要素を取得するときに基本的な反復構文を使う事は稀である。enumerating)を使用する事が作法となっている。次に列挙メッセージの送信例を示す。様々なセレクターがある。SQLに類似したセレクターに対応するメソッドを多数用意しているものもある。集合要素や値の生成器自体にこれらのメッセージを受け取れるよう実装する事で、集合要素のデータ構造や、生成器の入力元などの構造に依存せず最適な反復処理を実現できるようになっている。おいては、単にライブラリーの慣習として実現されている所が特徴的である。オブジェクトの変換[編集]Smalltalkでは一般的にオブジェクトに#as〜というセレクターを使ったメッセージが送られた場合、オブジェクトを別のクラスのオブジェクトに変換する。"→Urlクラスのオブジェクト"オブジェクトを別のオブジェクトに変換するメソッドやメンバー関数が用意されている事は、Smalltalkに限らず他の言語でも一般的であり珍しい事ではない。Smalltalkの慣習として特徴的なところは、既存のクラスにこのオブジェクトの変換をユーザーやライブラリーの作者が自由に組み込んでいる所である。Smalltalkの処理系であるPharoでは、初期状態で基本的なクラスであるStringに54個ものas〜で始まるメソッドが定義されている。この大量の変換メソッドは、メソッド追加した際すぐに影響を判断できるためメソッド追加に対し寛容的なSmalltalk独特の空気を象徴している。既存のクラスにメソッドを追加すればライブラリーを併合した際、意図しない衝突を生むため多用は避けるべきであるとの意見も存在する。[36]オブジェクトの変換はただオブジェクトの内部表現の変換だけでなく情報の加工にも使われる。)"セレクターとオブジェクトを指定したイベント処理[編集]イベントハンドラーを定義する方法として、Smalltalkでは次のようにセレクターと、レシーバーとなるオブジェクトを指定する方法が一般的である。view."#click:イベントが発生すると、controllerに対し#open:を使ったメッセージを送る。"viewhandleron:#click:send:#open:to:controller.同様にイベントハンドラーを指定する別の方法としては、ブロックを指定する方法が考えられる。イベントハンドラーにブロックを使う方法は、セレクターとオブジェクトを指定する方法のようにinspectだけでブロックを抱えたオブジェクトがどんな処理を実行するか判断できないうえ、ほとんどの環境はブロックの直列化に対応しておらず直列化もできなくなってしまうため、Smalltalkの文化においては避けるべきとされる。[37]このセレクターとオブジェクトを指定したイベント処理の方法は、Objective-Cの文化にも引き継がれておりCocoa等のライブラリーにて頻繁に目にすることができる。生まれた、制御(コントローラー)と情報(モデル)、そして情報の表現方法(ビュー)の3つを分離しクラスオブジェクトの再利用性を高め、実行時に情報と表現の組み合わせを変更できるようにした設計方針である。以外の言語と比べモデルの構築が格段に楽になっている。次にモデルの動作を確認する最低限のコードを示す。aModelに指定されたオブジェクトを監視対象として追加する。self."また、通常は新しいモデルからValueHolderObserverにとっての初期値の読み取りを行う。ここでは、初期値の読み取りの代わりにモデルが持つvalueオブジェクトの内容を表示Window(Transcript)に表示する。]."モデルが更新されると呼び出され、モデルが持つvalueオブジェクトの内容を表示Window(Transcript)に表示する。new."監視対象にmodelを指定してobserverを生成。valueが返す値、0が表示Window(Transcript)に表示される。ValueHolderObserveron:modelgetState:#value."modelの値を更新。valueが返す値、100が表示Window(Transcript)に表示される。クラスオブジェクトに実装されており、全てのオブジェクトはモデルとして動作する。クラスオブジェクトもモデルとして使用できるようになっている。環境で基本GUIシステムを構築している。大きな影響を与えている。「型をもたない」との表現を好む人もいる。2018年10月16日閲覧。2018年9月3日閲覧。他の言語でいうメソッドの多重定義はできない。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。