construct-super (マクロ)
パッケージ: CURL.LANGUAGE.COMPILER

サブクラスのコンストラクタから、スーパークラスのコンストラクタを起動します。

シグネチャ

{construct-super[.superclass][.name] [args]}

説明

直属のサブクラスのコンストラクタ内から、スーパークラスの constructor を任意の args で起動するのに使用します。superclass 名は、直属のスーパークラスが複数ある場合にのみ必要です。指定がない場合、name の既定は default です。

各スーパークラスについて 1 つのコンストラクタのみ起動できます。

詳細と例については、『開発者ガイド』の「コンストラクタとファクトリー」のセクションを参照してください。

プログラミング注意事項

コンパイラは、明示的な指定がない限り、すべてのスーパークラスについて、引数を使わずに既定のコンストラクタの呼び出しを自動的に生成します。このため、次の場合は construct-super を使用する必要があります。

{define-class HasOneParent {inherits Parent}
  {constructor {default n:int}
    || Different constructors may be chosen based on state:
    {if n <= 0 then
        {construct-super}
     else
        {construct-super.from-positive-int n}
    }
  }
}
{define-class HasManyParents {inherits Mom, Dad}
  {constructor {default}
    || Implicitly invoke default constructors of Mom and Dad
  }
  {constructor {alternate}
    {construct-super.Mom.non-default}
    {construct-super.Dad.from-int 42}
  }
}