![]() |
1
3
对我来说,元编程是“一个编写程序的程序”。 元编程特别适合重用,因为它支持泛化:您可以定义 家庭 属于某一特定的概念 模式 . 然后,通过 易变性 您可以在类似但不同的场景中应用该概念。 最简单的例子是Java的吸气剂和定位器,如Sjoerd所提到的: getter和setter都遵循定义明确的 模式 :getter返回类成员,setter设置类成员的值。通常你会建立一个所谓的 模板 允许应用和重用该特定模式。模板的工作方式取决于所使用的元编程/代码生成方法。 如果希望getter或setter的行为方式略有不同,可以向模板添加一些参数。这是 易变性 . 例如,如果要在获取/设置时添加其他处理代码,可以添加一个代码块作为可变性参数。混合自定义代码和生成的代码可能很棘手。 ABSE 是我知道的唯一一个本地支持自定义代码作为模板参数的MDSD方法。 |
![]() |
2
1
元编程不仅可以在运行时添加方法,还可以在编译时自动创建代码。即代码生成代码。
|
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 2 年前 |
![]() |
chenyuandong · Elixir中的元编程 6 年前 |
![]() |
Marcos Felipe · 基于存储的变量进行比较 6 年前 |
![]() |
TheDelChop · 动态定义对象#为Ruby类初始化 6 年前 |
![]() |
Mathieu Van Nevel · 将结构拆分为元组[重复] 6 年前 |
![]() |
Jonathan Mee · 如何防止为未实现方法的对象生成模板 7 年前 |
![]() |
spring cc · 如何在python元编程中使用实例方法? 7 年前 |