CompilerCallback

CompilerCallback["name"]

是一个函数,如果在编译器环境中定义,则由 Wolfram 编译器自动调用.

更多信息

  • 支持具有指定类型的以下回调:
  • "OnFree"{t}->"Null"在即将被释放时调用类型为 t 的内存管理对象
    "SerializeToExpression"{t}->"InertExpression"在编译代码和解释代码之间进行交互时调用,以将类型 t 的对象转换为表达式
    "DeserializeFromExpression"{"InertExpression"}->t在编译代码和解释代码之间进行交互时调用,以将表达式转换为类型为 t 的对象
    "DeserializableFromExpressionQ"{"InertExpression","TypeSpecifier"::[t]}->"Boolean"调用以检查表达式的格式是否采用可以反序列化为类型为 t 的对象
  • CompilerCallback["OnFree"] 可以定义自定义解构函数,用于需要手动解构的内存管理类型.
  • 在编译代码和解释代码之间进行接口时,可以定义表达式序列化回调来指定如何将类型转换为表达式,以及如何从表达式转换为类型.

范例

打开所有单元关闭所有单元

基本范例  (1)

声明一个内存管理类型和一个在释放时要执行的回调函数:

编译一个创建类型的函数,然后允许它被释放:

运行编译后的函数,当对象超出范围时执行回调:

范围  (1)

CompilerCallback 可用于指定编译类型如何与表达式相互转换. 定义产品类型:

定义一个回调函数将 myProduct 对象转换为 f[{f1},f2] 形式的表达式:

定义一个回调函数,来识别表达式何时以正确的形式转换为 myProduct 对象:

定义一个回调函数将表达式转换为 myProduct 对象:

编译一个接受并返回 myProduct 对象的函数,将其与表达式相互转换:

不具有正确形式的表达式将不会被转换:

属性和关系  (1)

CompiledExpressionDeclaration 自动定义表达式序列化回调. 为 f[_Real,_Integer] 形式的表达式声明一个已编译的表达式类型:

编译一个接受并返回此类型的函数,将其与表达式相互转换:

不具有正确形式的表达式将不会被转换:

Wolfram Research (2022),CompilerCallback,Wolfram 语言函数,https://reference.wolfram.com/language/ref/CompilerCallback.html.

文本

Wolfram Research (2022),CompilerCallback,Wolfram 语言函数,https://reference.wolfram.com/language/ref/CompilerCallback.html.

CMS

Wolfram 语言. 2022. "CompilerCallback." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/CompilerCallback.html.

APA

Wolfram 语言. (2022). CompilerCallback. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/CompilerCallback.html 年

BibTeX

@misc{reference.wolfram_2024_compilercallback, author="Wolfram Research", title="{CompilerCallback}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/CompilerCallback.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_compilercallback, organization={Wolfram Research}, title={CompilerCallback}, year={2022}, url={https://reference.wolfram.com/language/ref/CompilerCallback.html}, note=[Accessed: 22-November-2024 ]}