2.6. 内置函数
内置函数是无需任何模块即可使用的类似函数的表达式。 它们实现了语言的固有机制,在 AST 中作为单独的表达式提供。 它们与标准功能不同 (参阅 built-in functions).
2.6.1. Invoke
- invoke(block_or_function, arguments)
invoke
使用提供的参数列表调用块、lambda 或指向函数 (block_or_function) 的指针。
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
打印字符串 str 和 x 的值(就像 print)。但是,debug
也返回 x 的值,这使得它适合于调试表达式:let mad = debug(x, "x") * debug(y, "y") + debug(z, "z") // x*y + z