オブジェクトの変換
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)
「Smalltalk」の記事における「オブジェクトの変換」の解説
Smalltalkでは一般的にオブジェクトに#as〜というセレクターを使ったメッセージが送られた場合、オブジェクトを別のクラスのオブジェクトに変換する。例えば次の様な変換がある。 Stringの変換による具体例(変換結果は処理系依存): 'abcd' asSymbol. "→Symbolクラスのオブジェクト"'10' asInteger. "→SignedIntegerクラスのオブジェクト"'10:00' asTime. "→Timeクラスのオブジェクト""以下は処理系によっては存在しない"'/home' asPath. "→AbsolutePathクラスのオブジェクト"'http://example.com' asUrl. "→Urlクラスのオブジェクト" オブジェクトを別のオブジェクトに変換するメソッドやメンバー関数が用意されている事は、Smalltalkに限らず他の言語でも一般的であり珍しい事ではない。Smalltalkの慣習として特徴的なところは、既存のクラスにこのオブジェクトの変換をユーザーやライブラリーの作者が自由に組み込んでいる所である。例えばSmalltalkの処理系であるPharoでは、初期状態で基本的なクラスであるStringに54個ものas〜で始まるメソッドが定義されている。この大量の変換メソッドは、メソッド追加した際すぐに影響を判断できるためメソッド追加に対し寛容的なSmalltalk独特の空気を象徴している。しかし、既存のクラスにメソッドを追加すればライブラリーを併合した際、意図しない衝突を生むため多用は避けるべきであるとの意見も存在する。 オブジェクトの変換はただオブジェクトの内部表現の変換だけでなく情報の加工にも使われる。 オブジェクト変換による具体例: #( 2 1 2 3 1 3 ) asSortedCollection asSet. "-> #( 1 2 3 )"
※この「オブジェクトの変換」の解説は、「Smalltalk」の解説の一部です。
「オブジェクトの変換」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。
- オブジェクトの変換のページへのリンク