組み込み関数

import なしで、どこからでも使える関数。入出力・待ち・数え上げ・型変換がある。

print write input sleep assert len range range_step int float string bool
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

決めた秒だけ待つ。

待つのはこのタスクだけで、ほかのタスクは動き続ける。

secfloat待つ秒数。0 以下ならすぐ戻る
print("いきます");
sleep(0.5);
print("0.5 秒たちました");
assert(cond: bool, msg: string) → void

条件が偽なら、記録を残して止める。

condbool真であってほしい条件
msgstring偽だったときに出す説明
var xs = [1, 2, 3];
assert(xs.len() > 0, "空の配列");
print("ここまで来ます");
len(s: string) → int

長さを返す。文字列は文字数、そのほかは要素数。

オーバーロード: len(b: bytes) -> int len<T>(xs: list<T>) -> int len<K, V>(m: map<K, V>) -> int

print(len("さめ🦈"));           // 3
print(len([1, 2, 3]));          // 3
print(len({"a": 1}));           // 1
range(end: int) → Range

数え上げる範囲を作る。for でそのまま回せる。

値を全部は持たず、回すたびに次を作る。

オーバーロード: range(start: int, end: int) -> Range

endintここは含まない
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

刻み幅を決めて数え上げる。

startint
endint
stepint増やす幅。負なら減らす。0 は実行時エラー
for var i in range_step(10, 0, -2) { write(i); }   // 108642
print("");
int(v: float) → int

整数にする。文字列からは int?(読めなければ none)。

オーバーロード: int(v: bool) -> int int(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) -> string string(v: bool) -> string

print(string(42) + "匹");       // 42匹
print(string(true));            // true
bool(s: string) → bool?

真偽値にする。"true" と "false" だけを読む。

print(bool("true") ?? false);   // true
print(bool("はい") ?? false);   // false