関数(Function)

関数 (Function) はある値を受け取り,何かしらの処理を実行した結果としてある値を返すような一連の処理を表現するために使用します.

構文

func <NAME>() -> <TYPE> {
    <ANNOTATION>
    ...
}

func <NAME>(<NAME>: <TYPE>) -> <TYPE> {
    <ANNOTATION>
    ...
}

func <NAME>(<NAME>: <TYPE>, <NAME>: <TYPE>, ...) -> <TYPE> {
    <Annotattion>
    ...
}

関数 (Function) は必ず モジュール(Module) 内に定義される必要があります.

NAME

NAME は . を含まない文字列です.
ただし,既に同じ NAME をもつ データ(Data)モジュール(Module) などが定義されている場合,エラーになります.

TYPE

TYPE は . を含まない文字列です.
ただし,プリミティブ型として指定できる文字列や定義済みデータの名前を指定しない場合,エラーになります.

ANNOTATION

ANNOTATION は関数 (Function) の処理を表現するために使用します.
使用できる アノテーション(Annotation) は以下の通りです.

  • return
  • spawn
  • modify
  • affect

詳細は アノテーション(Annotation) を参照してください.

サンプル

unit test;

module ModuleA {
    func test(a: i32) -> i32 {
        @return b

        @spawn b: i32 {
            use a;
        }
    }
}