[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 一般的な問い合わせ

Function: class-of obj

objのクラスを返します。

 
(class-of 3)         ⇒ #<class <integer>>
(class-of "foo")     ⇒ #<class <string>>
(class-of <integer>) ⇒ #<class <class>>
Function: is-a? obj class

objclassのインスタンスであるか、classのサブクラスの インスタンスである場合に、真を返します。

 
(is-a? 3 <integer>)   ⇒ #t
(is-a? 3 <real>)      ⇒ #t
(is-a? 5+3i <real>)   ⇒ #f
(is-a? :foo <symbol>) ⇒ #f

objのクラスが再定義されてしまうと、これらの手続きは、最初に objのクラスを新しいクラスに変更します。したがって、class-of は いつも新しいクラスを返します。この振舞いは stklos 0.55 とは異ります。 stklos 0.55 では class-ofは、objが更新されていなければ、 旧いクラスを返します。もし、旧いクラスが必要なばあいは、以下の current-class-of を使うべきです。クラス再定義のセマンティクスの 詳細については クラスの再定義 を見てください。

Function: current-class-of obj

obj のクラスメタオブジェクトを返します。obj のクラスが 再定義されてしまった場合でも、obj がその変更に合せて更新されて いない場合には、この手続きは obj の元のクラスを返します。 この手続きは、obj を更新しません。

この手続きはめったに必要にはなりません。必要になるのは change-class メソッド内で、obj の更新のトリガーを引きたくないような場合 (無限ループを起す可能性がある場合)です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.