宣言
此内容尚不支持你的语言。
名前、型、関数などを新しく定義する記述を宣言と呼びます。Sobakasu では宣言の種類ごとに、記述できる場所が決まっています。
主なトップレベル宣言
Section titled “主なトップレベル宣言”ソースの最上位には、主に次の宣言を置けます。
module ...;use ...;public use ...;
const ... = ...;state { ... }
function ... { ... }struct ... { ... }enum ... { ... }type ... = extern ...;implementation ... { ... }behavior { ... }state と behavior
Section titled “state と behavior”イベント処理が終わった後も保持する値は、state ブロックの中へまとめて宣言します。
state { count: i32 = 0; public label: string = field;}以前の state count = 0; のように、state を変数ごとに付ける書き方は現在使用できません。使用するとコンパイルエラーになります。
VRChat のイベント処理とネットワークイベントの受信処理は behavior ブロックへ記述します。
behavior { on start { log("start"); }
receive ping { log("ping"); }}on や receive を behavior の外へ直接書くことはできません。
public
Section titled “public”public は、その宣言を外部から利用できるようにするときに付けます。何に対して公開されるかは宣言の種類によって異なります。
public use— 取り込んだ名前を別のモジュールにも再公開するpublic const/public function/public typeなど — モジュール外から利用できるようにするstate内のpublic— Unity の Inspector などから設定できる状態変数として公開するpublic receive— Udon から呼び出せるネットワーク受信処理として公開する
public を付けられない宣言に使用するとコンパイルエラーになります。
language item
Section titled “language item”language item は、コンパイラが特別な役割を持つものとして認識する型や implementation を宣言するための仕組みです。主に Prelude や標準ライブラリの実装で使用します。
language item "maybe"enum Maybe<T> { Nothing, Just(T),}通常のアプリケーションで独自の型を宣言するだけなら、language item は必要ありません。
ドキュメントコメント
Section titled “ドキュメントコメント”宣言の直前に /// を書くと、その宣言に対するドキュメントコメントになります。
/// 2つの値を加算します。function add(a: i32, b: i32) -> i32 { a + b}/// の直後に対応する宣言がない場合はコンパイルエラーになります。