struct MyData {
char* name;
Callback open;
Callback close;
Status status;
struct other { int value; int status; }
struct { int value; int status; }
union { Person* person; Company* company; }
union either { int this; bool or; char* that; }
}
サブ構造体 や 匿名/名前付きunion を柔軟に宣言
タグ付きユニオン もenumとanonymous unionで簡単実装
Cでも可能 だが、C3はより明示的・安全な表現
エラー処理
サンプル
int? a = 1; // オプショナル型
int? b = io::FILE_NOT_FOUND?;
faultdef OOPS, LOTS_OF_OOPS, USER_ERROR;
fn int? get_value();
if (catch excuse = get_value()) // エラー時処理
int foo = maybe_function()!; // エラーなら即リターン
C3は期待できそうだけど、nullをサポートする言語にはnull制限型が必要だよね。あの契約コメントみたいなのじゃなくて。もし全てにnullチェックをしなきゃいけないなら、Javaを書けばいいし…実際、Javaもこれを修正しようとしてるみたいだよね。https://openjdk.org/jeps/8303099