1

VBScript 保证 GC 将在每一行之后运行,因此如果您创建一个对象并且不保留引用,它将在行尾调用其析构函数。这允许您做许多有趣的事情,其中​​之一是模拟可选参数:

with foo(mandatoryArg)
    .optArg = 42
end

另一个是允许使用方便的构建器语法:

with Schema.define("Foo")
    .attr "name", String

    with .attr "key", String
        .lengthEquals(10)
    end
end

在此示例中,定义和 attr 返回对象,这些对象最终确定了析构函数中的架构和属性定义。

我一直将临时对象称为 ephemeron,但我想知道是否存在此类构造的预先存在的术语。有人在别处见过这个吗?

4

2 回答 2

1

根据维基百科中的建造者模式,是建造者或更具体地说是具体建造者。在实践中,这些对象通常是短暂的。构建器模式有一些组件,包括导向器等。但是您称为 ephemeron 的这个短暂的对象似乎正是构建器对象。

于 2010-02-05T02:52:51.290 回答
0

您肯定在使用构建器模式。不过,GC 的滥用是新的。您正在构建的语法类型的更通用名称是fluent interface

您可以使用“使用”语法在 C# 中实现类似的功能,但实际上人们为此使用 lambda 表达式,这更清楚。

于 2010-02-26T15:26:51.860 回答