実践CommonLispを読むその12
第十六章 オブジェクト指向再入門:総称関数
LISPにオブジェクト指向ってのがある事じたい驚きだよ。LISPでのオブジェクト指向って、どのくらい重要なの?別段、オブジェクト指向で記述しなくともよさそうなものだが、個人的にはリストの扱い方を理解しておけば良いかなと思っている。オブジェクト指向まで理解する必要はないだろうと・・・どうなんだろう。という訳で軽く流し読んだ。
たぶん重要なのはCommonLispにおける全てのデータは「T」のインスタンスがって事かな。
あとは流し読んだ。
第十七章 オブジェクト指向再入門:クラス
未だにシンジラレナイがLISPにオブジェクト指向があるとは、それ程重要なのかなこれは。この章では具体的にコードを書いてくれてたので理解しやすかった。
そうそうオブジェクト指向言語にはプロトタイプベースのものとクラスベースのものがありCommonLispはクラスベース。C++やJavaもクラスベース。プロトタイプベースで有名なのはJavaScriptですね。あと、Googleの新言語Goもプロトタイプベースかな。
;;; クラス定義 (defclass bank-account () ((customer-name :initarg :customer-name) (balance :initarg :balance :initform 0))) ;;; インスタンス生成 (defparameter *account* (make-instance 'bank-account :customer-name "John Doe" :balance 1000)) ;;; 値を取得 (slot-value *account* 'customer-name) → "John Doe" (slot-value *account* 'balance) → 1000
なんとなく感じはつかめた。LISP界隈ではオブジェクト指向のコーディングが当たり前になっているんだろうか?それとも、そんなんあるのって感じなのだろうが。まあ〜LISPでオブジェクト指向で作らなくてはいけないわけじゃないからね〜手続き型指向でも十分LISPのパワーを発揮できると思っています。という訳で完全に流し読みした。では