.. _stdlib_defer: ============================= defer 和 defer_delete 宏 ============================= .. include:: detail/defer.rst Apply 模块实现了 `defer` 和 `defer_delete` 模式,即能够在不离开代码上下文的情况下将一些代码或 delete作附加到块的 finally 部分。 所有函数和交易品种都在 “defer” 模块中,使用 require 来访问它。 :: require daslib/defer ++++++++++++++++++++ 函数注释 ++++++++++++++++++++ .. _handle-defer-DeferMacro: .. das:attribute:: DeferMacro 此宏转换 defer() <| block 表达式转换为 {},并将 block 移动到当前块的 finally 部分 +++++++++++ 调用宏 +++++++++++ .. _call-macro-defer-defer_delete: .. das:attribute:: defer_delete 该宏将 defer_delete() 表达式转换为 {},并将 delete 表达式添加到当前块的 finally 部分 +++++ Defer +++++ * :ref:`defer (blk:block\ const) : void ` .. _function-_at_defer_c__c_defer_C1_ls_v_gr__builtin_: .. das:function:: defer(blk: block const) +--------+-------------+ +argument+argument type+ +========+=============+ +blk +block<> const+ +--------+-------------+ defer 一段代码。例如:: var a = fopen("filename.txt","r") defer <| fclose(a) 当 'a' 超出范围时将关闭文件。 ++++ Stub ++++ * :ref:`nada () : void ` .. _function-_at_defer_c__c_nada: .. das:function:: nada() helper 函数,该函数不执行任何作,并且将被优化