組み込み関数
import なしで、どこからでも使える関数。入出力・待ち・数え上げ・型変換がある。
- print(values: Any...) → void¶
-
標準出力に出して、改行する。
どんな型でも、いくつでも渡せる(`Any` は「どんな型でも」の意味で、ここだけの書き方。変数の型には書けない)。複数渡すと空白で区切って出し、何も渡さなければ改行だけを出す。クラスは `to_string()` があればそれを呼び、無ければ `クラス名(メンバ: 値, ...)` の形で出す。
区切りと終わりは、名前を付けた引数で変えられる。`sep:` は値の間に入る文字列(既定は空白)、`end:` は最後に足す文字列(既定は改行)。
print("さめ"); // さめ print(42); // 42 print([1, 2]); // [1, 2] print("答え:", 42); // 答え: 42 print(1, 2, 3, sep: "-"); // 1-2-3 print("つづく", end: ""); // 改行しない print("", end: "\n"); // 上の行をここで閉じる
- write(values: Any...) → void¶
-
標準出力に出す。改行しない。
print と同じで、どんな型でもいくつでも渡せる。複数は空白で区切る。 `sep:` と `end:`(こちらの既定は空)も print と同じように使える。
write("名前: "); write("さめ"); print(""); // ここで改行する
- input() → string?¶
-
標準入力から1行読む。改行は含まない。
まだ行が来ていなければ、来るまで待つ。終端なら none を返す。待っている間もホストは止まらない。
write("名前: "); var name = input() ?? "ゲスト"; print(f"こんにちは、{name}さん");
- sleep(sec: float) → void¶
-
決めた秒だけ待つ。
待つのはこのタスクだけで、ほかのタスクは動き続ける。
sec float 待つ秒数。0 以下ならすぐ戻る print("いきます"); sleep(0.5); print("0.5 秒たちました");
- assert(cond: bool, msg: string) → void¶
-
条件が偽なら、記録を残して止める。
cond bool 真であってほしい条件 msg string 偽だったときに出す説明 var xs = [1, 2, 3]; assert(xs.len() > 0, "空の配列"); print("ここまで来ます");
- len(s: string) → int¶
-
長さを返す。文字列は文字数、そのほかは要素数。
オーバーロード:
len(b: bytes) -> intlen<T>(xs: list<T>) -> intlen<K, V>(m: map<K, V>) -> intprint(len("さめ🦈")); // 3 print(len([1, 2, 3])); // 3 print(len({"a": 1})); // 1
- range(end: int) → Range¶
-
数え上げる範囲を作る。for でそのまま回せる。
値を全部は持たず、回すたびに次を作る。
オーバーロード:
range(start: int, end: int) -> Rangeend int ここは含まない for var i in range(3) { write(i); } // 012 print(""); for var i in range(1, 4) { write(i); } // 123 print("");
- range_step(start: int, end: int, step: int) → Range¶
-
刻み幅を決めて数え上げる。
start int end int step int 増やす幅。負なら減らす。0 は実行時エラー for var i in range_step(10, 0, -2) { write(i); } // 108642 print("");
- int(v: float) → int¶
-
整数にする。文字列からは int?(読めなければ none)。
オーバーロード:
int(v: bool) -> intint(s: string) -> int?print(int(3.9)); // 3 print(int(true)); // 1 print(int("42") ?? 0); // 42 print(int("さめ") ?? -1); // -1
- float(v: int) → float¶
-
小数にする。文字列からは float?(読めなければ none)。
オーバーロード:
float(s: string) -> float?print(float(3)); // 3.0 print(float("1.5") ?? 0.0); // 1.5
- string(v: int) → string¶
-
文字列にする。クラスは to_string() が使われる。
オーバーロード:
string(v: float) -> stringstring(v: bool) -> stringprint(string(42) + "匹"); // 42匹 print(string(true)); // true
- bool(s: string) → bool?¶
-
真偽値にする。"true" と "false" だけを読む。
print(bool("true") ?? false); // true print(bool("はい") ?? false); // false