ユーザ用ツール

サイト用ツール


oop:aboutclass

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

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