嵌入式方法的属性详解与特性分析

火山封装
2024-12-16


在递归火山软件开发平台中,嵌入式方法通过一系列属性来定义其行为和特性。以下是对各个属性名的详细解释和用途说明:

  1. name

    • 类型:文本型

    • 用途:定义嵌入式方法的标记名称,该名称在所处的类中唯一且有效。它用于标识和引用该嵌入式方法。


  2. has_body

    • 类型:逻辑型

    • 默认值:假

    • 用途:指定嵌入式方法调用语句是否携带一个子语句体。如果为真,则嵌入式方法调用时可以包含一段代码块。


  3. has_loop_body

    • 类型:逻辑型

    • 默认值:假

    • 用途:指定嵌入式方法调用语句是否携带一个循环体类型的子语句体。在该子语句体中,可以支持特定的循环控制语句。


  4. body_header

    • 类型:文本型

    • 用途:当has_body或has_loop_body为真时,指定编译时在子语句体首部加入的本地代码行。如果不定义或为空文本,则使用默认的子语句体起始代码。


  5. body_tail

    • 类型:文本型

    • 用途:当has_body或has_loop_body为真时,指定编译时在子语句体尾部加入的本地代码行。如果不定义或为空文本,则使用默认的子语句体结束代码。


  6. prev

    • 类型:文本型

    • 用途:指定一个或多个位于相同类中、必须在当前嵌入式方法调用语句之前调用的嵌入式方法标记名称。使用逗号分隔多个名称,或使用@none表示当前调用语句位于语句体首部。


  7. next

    • 类型:文本型

    • 用途:指定一个或多个位于相同类中、必须在当前嵌入式方法调用语句之后调用的嵌入式方法标记名称。使用格式与prev相同。


  8. parent

    • 类型:文本型

    • 用途:指定一个或多个父嵌入式方法的标记名称,当前嵌入式方法的调用语句必须位于这些父方法的子语句体中。使用格式与prev相同,@none表示位于顶层语句体内。


  9. child

    • 类型:文本型

    • 用途:指定当前嵌入式方法子语句体中只能存在的嵌入式方法标记名称。使用格式与prev相同,@none表示子语句体为空。


  10. lineal_parent

    • 类型:逻辑型

    • 默认值:假

    • 用途:与parent属性配合使用,指定当前嵌入式方法的调用语句是否必须直接位于指定的父嵌入式方法调用语句的子语句体中。


  11. req_obj_param_pointer

    • 类型:逻辑型

    • 默认值:假

    • 用途(视窗版):指定是否将方法的所有文本型和对象型调用参数转换为其对象地址指针。


  12. req_str_param_text_pointer

    • 类型:逻辑型

    • 默认值:假

    • 用途(视窗版):指定是否将方法的所有文本型调用参数转换为其文本数据指针。优先级高于req_obj_param_pointer。


  13. req_str_param_text_pointer_u8

    • 类型:逻辑型

    • 默认值:假

    • 用途(视窗版):与req_str_param_text_pointer类似,但提供UTF8编码的文本指针。


  14. no_end_sem

    • 类型:逻辑型

    • 默认值:假

    • 用途:指定在嵌入式方法的调用语句尾部是否不自动加入分号。


  15. req_cpp_bool

    • 类型:逻辑型

    • 默认值:假

    • 用途(视窗版):指定逻辑型参数是否需要使用C++的boolean数据类型表达。


特点和注意事项:

  • 嵌入式方法自动禁止流程检查。

  • 如果有has_body、has_loop_body属性或prev/next非空属性值,则嵌入式方法不能有返回值。

  • 特定方法(如类初始化、类清理等)不能设置为嵌入式方法。

  • 嵌入式方法内只能存在嵌入行语句,这些语句与调用参数组合替换调用语句本身。

  • 嵌入行语句内访问成员需明确指定类名前缀,且该类必须为公开类;只能访问公开成员。

  • 嵌入行语句内的特殊标记(如sn<current_class>)基于调用位置获取。

  • 嵌入行语句内对方法参数的引用有次数限制。

通过这些属性,递归火山软件开发平台提供了强大的嵌入式方法定义能力,允许开发者灵活控制代码的结构和行为。


阅读9
分享
写评论...