Specript Language Reference rev.0.7.0 www.specript.org

目次 | << 前章 | 次章 >>

9.extern property/extern function

extern property/extern functionは、Javaで実装された外部のプログラムコードを Specriptプログラムコードから呼び出すための機構です。extern propertyは初期化式の ないpropertyとして、extern functionは本体式のないfunctionとして定義します。 extern propertyの参照、extern functionの呼び出しを行うと、いずれもSpecript実行環境に 配置されたJavaプログラムコードを呼び出すこととなります。

extern property/extern functionの定義とJava実装との関連付けは、Specript実行環境に 対するコンフィギュレーションで行います。extern property/extern functionを実装する Javaプログラムコードはorg.specript.runtime.extern.ExternProperty、 もしくはorg.specript.runtime.extern.ExternFunctionインターフェースをimplementsする 必要があります。コンフィギュレーションでは、定義されたextern property/extern functionの namespace付き‘フルネーム’とインターフェースをimplementsしたJavaクラス名を関連付けます。

9−1.extern property/extern functionの定義

extern property定義は、一般のproperty定義に比べて、

  • 予約語"extern"が付く
  • 初期化式がない
  • spec指定が必須である
  • 以上の点が異なります。

    同じく、extern function定義は一般のfunction定義に比べて、

  • 予約語"extern"が付く
  • 本体式がない
  • 引数と返り値のspec指定が必須である
  • クロージャー引数は使用できない
  • 以上の点が異なります。

    【extern property定義の書式(EBNF)】

    <extern property定義> ::=

    ( "public" | "private" )? "extern" "property" <property名> ":" ( "not" "null" )? <propertyのspec> ( "#" <制約違反式> )? ";"

    【extern function定義の書式(EBNF)】

    <extern function定義> ::=

    ( "public" | "private" )? "extern" "function" <function名> ( "(" <引数定義リスト> ")" )? ":" <functionの返り値のspec> ";"

    <引数定義リスト> ::=

    <引数定義> ( "," <引数定義> )*

    <引数定義> ::=

    <引数名> ":" <引数のspec> ( "=" <引数のデフォルト値式> )?

    9−2.extern property/extern functionの参照、呼び出し

    extern propertyの参照、extern functionの呼び出しについては、

  • namespaceによる可視範囲の制御
  • using宣言やalias定義を用いた参照、呼び出しの記法
  • propertyの初期化式の評価されるタイミング
  • function呼び出しにおいて、デフォルト値式がある引数を省略できること
  • function呼び出しにおいて、引数名を明示する記法
  • これらの点などにおいて、一般のproperty、functionと全く区別無く行うことができます。


    目次 | << 前章 | 次章 >>


    (c)2007-2008, Specript Development Team Last Updated: 2008-03-06