2.6. 内置函数

内置函数是无需任何模块即可使用的类似函数的表达式。 它们实现了语言的固有机制,在 AST 中作为单独的表达式提供。 它们与标准功能不同 (参阅 built-in functions).

2.6.1. Invoke

invoke(block_or_function, arguments)

invoke 使用提供的参数列表调用块、lambda 或指向函数 (block_or_function) 的指针。

(参阅 Functions, Blocks, Lambdas).

2.6.2. Misc

assert(x, str)

如果 x 参数为 false,则 assert 会导致应用程序定义的断言。 assert 可以而且可能会从发布版本中删除。 这就是为什么如果 x 参数有副作用(例如,调用一个有副作用的函数)它不会编译。

verify(x, str)

如果 x 参数为 false,则 verify 会导致应用程序定义的断言。 可以从发布版本中删除 verify 检查,但保留 x 参数的执行。 这就是为什么 verify 与 assert 不同,在评估 x 时可能会有副作用。

static_assert(x, str)

如果 x 参数为 false,则 static_assert 会导致编译器停止编译。 这就是为什么 x 必须是编译时已知的常量。 static_assert 已从编译的程序中删除。

concept_assert(x, str)

concept_assert``类似于``static_assert ,但错误将报告在断言之上一级。 这样,应用程序就可以报告协定错误。

debug(x, str)

debug 打印字符串 strx 的值(就像 print)。但是, debug 也返回 x 的值,这使得它适合于调试表达式:

let mad = debug(x, "x") * debug(y, "y") + debug(z, "z") // x*y + z