Skip to content

std.convert ​

型変換モジュールで、現在値から String への変換を提供します。

yaoxiang
use std.convert

変換ルール ​

to_string は値のランタイム形式に基づいてフォーマットします:

型出力形式例
Voidvoidvoid
Booltrue / falsetrue
Int十進数42
Float下記参照3.14 / 2.0
Char文字そのものa
String元の内容(引用符なし)hello
List[要素, ...][1, 2, 3]
Dict{k: v, ...}{a: 1}
Tuple(要素, ...)(1, hello)
Array[要素, ...][1, 2]
Range開始..終了1..5(step が 1 の場合は省略)
Bytesbytes[長さ]bytes[3]

Float の整数値は小数点を補完し(2 ではなく 2.0)、Int と Float の区別を容易にします。

関数一覧 ​

関数シグネチャ
to_string(value) -> String
int.to_string(self) -> String
float.to_string(self) -> String
bool.to_string(self) -> String
char.to_string(self) -> String
string.to_string(self) -> String
list.to_string(self) -> String
dict.to_string(self) -> String
tuple.to_string(self) -> String
set.to_string(self) -> String
range.to_string(self) -> String
## 関数

to_string ​

yaoxiang
to_string: (value) -> String

任意の値をその文字列表現に変換します。

  • value —— 任意の型の値

戻り値:フォーマットされた文字列。引数が欠落している場合は "()" を返します。

yaoxiang
use std.assert
use std.convert

main: () -> Void = {
    assert(convert.to_string(42) == "42")
    assert(convert.to_string(true) == "true")
    assert(convert.to_string(false) == "false")
}

文字列自体は引用符で囲まれません:

yaoxiang
use std.assert
use std.convert

main: () -> Void = {
    assert(convert.to_string("hi") == "hi")
}

複合型は再帰的に展開されます(形式は脆弱さを避けるためにアサートしません):

yaoxiang
use std.assert
use std.convert
use std.string

main: () -> Void = {
    s_list = convert.to_string([1, 2, 3])
    assert(string.len(s_list) > 0)

    s_dict = convert.to_string({})
    assert(string.len(s_dict) > 0)
}

型メソッド形式 ​

汎用 convert.to_string 외에도、モジュールは次の型バインドの同名の関数をエクスポートし、動作は完全に同じです:

エクスポート名シグネチャ
int.to_string(self) -> String
float.to_string(self) -> String
bool.to_string(self) -> String
char.to_string(self) -> String
string.to_string(self) -> String
list.to_string(self) -> String
dict.to_string(self) -> String
tuple.to_string(self) -> String
set.to_string(self) -> String
range.to_string(self) -> String

これらのバインディングはランタイムの Stringable ディスパッチに使用され、日常のコードでは convert.to_string を直接使用すれば十分です。

Set 型は言語層からすでに削除されており、set.to_string は互換性のためのプレースホルダとして残されています。

関連 ​

  • std.io —— print / println の内部フォーマットは同じルールに従います
  • std.string —— 文字列操作