bone はプロトタイピング言語をベースとしており、
いくつか独自のアイデアも加えられています。
また、この言語は実験的なものなので
他の言語にあるような人気のある機能のいくつかは含まれません。
例:
- class, interface, overload
- method
- exception,try-catch
- null
この言語独自のアイデアはオブジェクトインジェクションとスコープインジェクションです。
これは名前つき戻り値と関連しています。
また、値を返す時は常に名前つき戻り値を使います。
名前つき戻り値
//mdtest
{} <- load("file.bn");
f := def()(value, error) {
value := "value is string";
error := false;
};
// オブジェクトインジェクション
v := object() <- f();
stdout.puts(v.value);
stdout.puts(v.error.to_string());
// スコープインジェクション
{} <- f();
stdout.puts(value);
stdout.puts(error.to_string());
// ネストした名前つき戻り値
f2 := def()(value, error, value2) {
{} <- f();
value2 := "value 2";
};
オブジェクトインジェクション
//mdtest
stdio := object() <- load("./file.bn");
stdio.stdout.puts("hello, world");
スコープインジェクション
//mdtest
{} <- load("./file.bn");
stdout.puts("hello, world");
詳細は document フォルダを参照してください。