.. _builtin_functions: ================== 内置函数 ================== .. index:: single: Built-in Functions pair: Global Symbols; Built-in Functions 内置函数是无需任何模块即可使用的类似函数的表达式。 它们实现了语言的固有机制,在 AST 中作为单独的表达式提供。 它们与标准功能不同 (参阅 :ref:`built-in functions `). ^^^^^^ Invoke ^^^^^^ .. das:function:: invoke(block_or_function, arguments) ``invoke`` 使用提供的参数列表调用块、lambda 或指向函数 (`block_or_function`) 的指针。 (参阅 :ref:`Functions `, :ref:`Blocks `, :ref:`Lambdas `). ^^^^^^^^^^^^^^ Misc ^^^^^^^^^^^^^^ .. das:function:: assert(x, str) 如果 `x` 参数为 false,则 ``assert`` 会导致应用程序定义的断言。 ``assert`` 可以而且可能会从发布版本中删除。 这就是为什么如果 `x` 参数有副作用(例如,调用一个有副作用的函数)它不会编译。 .. das:function:: verify(x, str) 如果 `x` 参数为 false,则 ``verify`` 会导致应用程序定义的断言。 可以从发布版本中删除 ``verify`` 检查,但保留 `x` 参数的执行。 这就是为什么 verify 与 ``assert`` 不同,在评估 `x` 时可能会有副作用。 .. das:function:: static_assert(x, str) 如果 `x` 参数为 false,则 ``static_assert`` 会导致编译器停止编译。 这就是为什么 `x` 必须是编译时已知的常量。 ``static_assert`` 已从编译的程序中删除。 .. das:function:: concept_assert(x, str) ``concept_assert``类似于``static_assert`` ,但错误将报告在断言之上一级。 这样,应用程序就可以报告协定错误。 .. das:function:: debug(x, str) ``debug`` 打印字符串 `str` 和 `x` 的值(就像 print)。但是, ``debug`` 也返回 `x` 的值,这使得它适合于调试表达式:: let mad = debug(x, "x") * debug(y, "y") + debug(z, "z") // x*y + z