Equa1.0における書式集

classの定義

  • オブジェクト指向プログラミングでは基本的に登場するクラスの定義構文です。lib/cel/Equa/trunk/std/vector.luaとかを参考にするといいよ!
class "くらすのなまえ"
:description( "このクラスが何なのか説明するための文字列です。" )
:inherits( 継承したいクラス )
:concept( 実装したいコンセプト、カンマで区切れば何個もかけるよ! )
:attributes( クラスに持たせたい属性、カンマで区切れば何個もかけるよ! )
{

  クラスのめんばーをここに書くよ!
  現状では以下のようなものがあるよ!

  method : 要するに関数。
  metamethod : 演算子を定義したいときなんかに使うシロモノ。
  field : 要するに変数。

  こいつらの書き方についてはそれぞれ、methodの定義、metamethodの定義、fieldの定義の項目を参照してね!
}

methodの定義

method"めそどの名前"
〜ここから省略可能
 :description( "このメソッドが何なのか説明するための文字列です。" )
 :attributes( メソッドに持たせたい属性、カンマで区切って複数指定できる。詳細は後述)
 :precondition( メソッドの事前条件。引数とオブジェクトの内部状態とかをチェックする。 )
 〜ここまで省略可能
:body( メソッドの本体となる関数をここに書きます。 )

指定できるattributes

  • override 基底クラスの同名のメソッドをのっとってるよ!
  • static 静的メソッドです。(=インスタンスじゃなくてクラス所属)

metamethodの定義

名前が決まってることと

metamethod"メタメソッド名"

なのを除けばmethodといっしょ

metamethod名

  • "_init" イニシャライザです。:newしてインスタンスを初期化するときに呼ばれます
  • "__add" "__sub" "__mul" "__div" "__pow" それぞれの演算をします
  • "__unm" 単項マイナスします
  • "__call" 関数としてインスタンスを呼び出したときに呼ばれます あとなんかあったっけ?

preconditionについて

Equaをrequireするより前に_DEBUGグローバル変数の値をtrueにしておかないと呼び出されません。

fieldの定義

field"ふぃーるどのなまえ"
〜ここから省略可能
 :description( "このフィールドが何なのか説明するための文字列です。" )
 :attributes(フィールドの属性)
 :init(フィールドの初期値。attributesにstaticを指定した時だけ書いてもいい)
〜ここまで省略可能

指定できるattributes

  • static 静的フィールドです。(=インスタンスじゃなくてクラス所属)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-11-08 (日) 23:13:56