内建函数

这一页只说明当前已经稳定的少量全局内建能力。

输出

print("hello")
println("hello")
eprint("error")
eprintln("error")

这些输出函数接受 any,主要用于调试和简单展示。

iter(...)

iter 同时是内建参数化类型名和内建构造形式。

let xs: list<int> = [1, 2, 3];

let out = iter(xs).map(func(x: int) -> string {
    `#${x}`
}).collect();

当前稳定写法可按下面理解:

  • iter(xs: list<T>) -> iter<T>
  • 它把稳定容器转换成遍历管道起点
  • 具体的 map / filter / collect 方法见“复合类型”和“匿名函数”文档

panic

panic("something went wrong")

规则:

  • 参数类型是 string
  • 调用后不会正常返回
  • 常用于不可恢复的错误路径

assert

assert 目前保留为内建调试能力。

assert(x > 0)
assert(x > 0, some("x must be positive"))

当前用户侧可按以下方式理解:

  • 第一个参数是 bool
  • 第二个参数如果提供,使用 opt<string>

说明

  • text / fragment / comment / element / main 属于渲染内建,不在这一页重复说明
  • int(x)float(x) 属于显式类型转换
  • nonesome(...) 属于 opt<T> 的语言构造

更完整的设计背景见:

  • docs/01.design/18.built-in-functions.md
  • docs/01.design/15.render-intrinsics.md