You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于TagGroupAddLabeledTagGroup返回src_tag_group的设计疑问

关于TagGroupAddLabeledTagGroup返回值的设计逻辑解析

1. 返回src_tag_group的设计目的

核心是契合DM-script API的链式调用设计惯例,同时强化操作的直观性:

  • 这个函数的核心功能是将src_tag_group挂载到tgt_tag_group下,返回src可以让开发者在完成挂载操作后,直接对目标对象做后续操作,无需额外写一行变量引用。
  • 虽然DM-script中TagGroup是引用类型,开发者本来就可以直接访问src,但返回实例能明确确认操作的对象一致性,消除开发者对“是否是同一个实例”的潜在疑问,让代码逻辑更确定。

2. 链式调用与可读性提升的场景

这种设计最直接的价值就是简化链式调用,让代码更紧凑连贯。比如:

传统写法

TagGroup tgt = NewTagGroup()
TagGroup src = NewTagGroup()
src.TagGroupSetTagAsString("SampleName", "TestData")
TagGroupAddLabeledTagGroup(tgt, "RawData", src)
// 后续操作src
src.TagGroupSetTagAsNumber("Version", 1)

链式调用写法

TagGroup tgt = NewTagGroup()
TagGroupAddLabeledTagGroup(tgt, "RawData", NewTagGroup().TagGroupSetTagAsString("SampleName", "TestData"))
    .TagGroupSetTagAsNumber("Version", 1)

后者把“创建src→设置初始属性→挂载到tgt→补充属性设置”的流程串成一行,减少临时变量的冗余,逻辑线条更清晰。

3. DM-script中同类设计模式的示例与益处

DM-script的核心API大量采用这种“操作后返回目标对象”的设计,典型例子包括:

  • TagGroup类方法:TagGroupSetTagAsString、TagGroupSetTagAsNumber等属性设置方法,均返回调用的TagGroup实例,支持连续设置多个属性。
  • Image类方法:ImageClone()返回克隆后的图像实例、ImageResize()返回调整尺寸后的图像,ImageAddImage()返回运算后的结果图像。
  • Window类方法:WindowCreate()返回创建的窗口实例,WindowSetTitle()返回该窗口,支持链式配置窗口属性。

这类设计的统一益处:

  • 减少冗余代码,避免创建大量无意义的临时变量。
  • 让代码的执行流程更线性,尤其是构建复杂对象(如嵌套TagGroup、多步骤图像处理)时,链式调用能清晰展示操作顺序。
  • 保持API设计的一致性,降低开发者学习成本,熟悉一种模式后就能快速上手其他同类API。

内容的提问来源于stack exchange,提问作者ChenZX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:14:58