ユーザ用ツール

サイト用ツール


oop:aboutclass

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
oop:aboutclass [2023/01/14 05:15] – [概要] machiaworxoop:aboutclass [2023/01/14 05:48] (現在) – [サンプル] machiaworx
行 14: 行 14:
  
 また、ドット構文で呼び出された関数は、呼び出されたオブジェクトを参照する自己変数を取得します。 また、ドット構文で呼び出された関数は、呼び出されたオブジェクトを参照する自己変数を取得します。
- 
-正直クラスの概念は理解が難しいので、読み飛ばしても大丈夫です。 
  
 ---- ----
 +
 +==== 説明 ====
 +
 +正直クラスの概念は理解が難しいので、特に使う予定が少なければ最初は読み飛ばしても大丈夫です。
 +
 +が、情報がないと困る(特に自分)ので、書いておきます。
 +
  
 Miniscriptにおけるクラスは、ここでは「特殊なマップ変数」という扱いになります。 Miniscriptにおけるクラスは、ここでは「特殊なマップ変数」という扱いになります。
行 24: 行 29:
  
   * 各種変数・関数の呼び出し方が「class.変数」「class.関数」となっていること   * 各種変数・関数の呼び出し方が「class.変数」「class.関数」となっていること
-  * 「<nowiki>__isa</nowiki>」というーが存在していること+  * 「<nowiki>__isa</nowiki>」というエントリーが存在していること
  
-<nowiki>__isa</nowiki>は、マップの基本クラスを参照する特別なエントリーという位置づけになっており、基準にするクラスの情報が入ってます。+<nowiki>__isa</nowiki>は、マップの基本クラスを参照する特別なエントリーという位置づけになっております。
  
-クラスから作成したインスタンスでは、この基クラスの情報を参照して関数を呼び出したり、変数として取り扱う際の情報を参照する位置づけになります。+クラスから作成したインスタンスでは、この基クラスの情報を参照して関数を呼び出したり、変数として取り扱う際の情報を参照する位置づけになります。
  
 サンプルに<nowiki>__isa</nowiki>の内容を呼び出すプログラムも書いてみました。 サンプルに<nowiki>__isa</nowiki>の内容を呼び出すプログラムも書いてみました。
行 34: 行 39:
 ==== サンプル ==== ==== サンプル ====
  
-  shape={"sides":0} +  shape={"sides":0}      //クラスが持ってる変数の定義。(マップとして定義する) 
-  square = new shape +  square = new shape     //先程定義した変数をクラスと見てインスタンスを作成 
-  square.sides=3 +  square.sides=3         //作成したインスタンスのメンバ変数を書き換え 
-  square +  square                 //インスタンスの情報を表示 
-  x=new square +  square.__isa           //__isaエントリを確認。今のところメンバ変数sidesのみ記載 
-  print x.sides +  x=new square           //さっき作ったインスタンスをクラスと見てインスタンスを作成(継承の取り扱い) 
-  shape.puresq=function +  print x.sides          //継承したインスタンスのメンバ変数を表示 
-    return self.sides*self.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.1673640939.txt.gz · 最終更新: 2023/01/14 05:15 by machiaworx