oop:aboutclass
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
oop:aboutclass [2023/01/14 05:04] – 作成 machiaworx | oop:aboutclass [2023/01/14 05:48] (現在) – [サンプル] machiaworx | ||
---|---|---|---|
行 1: | 行 1: | ||
- | クラス・オブジェクトについて | + | ====== |
- | 資料 | + | ==== 資料 |
https:// | https:// | ||
- | __isaについて | + | < |
https:// | https:// | ||
- | 概要 | + | ==== 概要 |
- | クラスまたはオブジェクトは、Miniscriptにおいては親を指す特別な __isa エントリを持つマップです。 | + | クラスまたはオブジェクトは、Miniscriptにおいては親を指す特別な |
また、ドット構文で呼び出された関数は、呼び出されたオブジェクトを参照する自己変数を取得します。 | また、ドット構文で呼び出された関数は、呼び出されたオブジェクトを参照する自己変数を取得します。 | ||
行 17: | 行 17: | ||
---- | ---- | ||
- | まずクラスというのは、ここでは「特殊なマップ変数」という扱いになります。 | + | ==== 説明 ==== |
- | よって、mapと同様の使い方ができるということですね。 | + | 正直クラスの概念は理解が難しいので、特に使う予定が少なければ最初は読み飛ばしても大丈夫です。 |
+ | |||
+ | が、情報がないと困る(特に自分)ので、書いておきます。 | ||
+ | |||
+ | |||
+ | Miniscriptにおけるクラスは、ここでは「特殊なマップ変数」という扱いになります。 | ||
通常のmapと違って特殊なのは、以下の内容です。 | 通常のmapと違って特殊なのは、以下の内容です。 | ||
* 各種変数・関数の呼び出し方が「class.変数」「class.関数」となっていること | * 各種変数・関数の呼び出し方が「class.変数」「class.関数」となっていること | ||
- | * 「__isa」というキーが存在していること | + | * 「< |
- | __isaは、マップの基本クラスを参照する特別なエントリーという位置づけになっており、基準にするクラスの情報が入ってるわけですね。 | + | < |
- | サンプルに__isaの内容を呼び出すプログラムも書いてみました。 | + | クラスから作成したインスタンスでは、この基本クラスの情報を参照して関数を呼び出したり、変数として取り扱う際の情報を参照する位置づけになります。 |
- | サンプル | + | サンプルに< |
- | shape={" | + | ==== サンプル ==== |
- | square | + | |
- | square.sides=3 | + | |
- | square | + | |
- | x=new square | + | |
- | print x.sides | + | square = new shape // |
- | + | square.sides=3 | |
- | shape.puresq=function | + | square |
- | return self.sides*self.sides | + | square.__isa |
+ | | ||
+ | print x.sides | ||
+ | shape.puresq=function | ||
+ | return self.sides*self.sides | ||
end function | end function | ||
- | print x.puresq() | + | print x.puresq() |
- | square | + | square |
- | square.__isa | + | square.__isa |
- | サンプル説明 | + | ==== サンプル出力 ==== |
{{: | {{: | ||
- | |||
oop/aboutclass.1673640288.txt.gz · 最終更新: 2023/01/14 05:04 by machiaworx