VBScript保证GC将在每一行之后运行,因此如果你创建一个对象而不保留一个引用,它的析构函数将在该行的末尾被调用。这允许你做一些有趣的事情,其中一个是模拟可选参数:
with foo(mandatoryArg)
.optArg = 42
end
另一个允许使用方便的构建器语法:
with Schema.define("Foo")
.attr "name", String
with .attr "key", String
.lengthEquals(10)
end
end
在此示例中,define和attr返回在析构函数中完成模式和属性定义的对象。
我一直把临时对象称为ephemeron,但我想知道是否有这样的结构预先存在的术语。有人在别处见过这个吗?
答案 0 :(得分:1)
根据Builder pattern in wikipedia,这是 构建器,或者更具体地说是具体构建器。在实践中,这些物体通常是短暂的。构建器模式有一些组件,包括导向器等。但是这个称为ephemeron的短暂对象似乎正是构建器对象。
答案 1 :(得分:0)
您肯定使用的是构建器模式。但滥用GC是新的。您正在构建的语法类型的更通用的名称是fluent interface。
您可以使用“using”语法在C#中实现类似的功能,但在实践中,人们使用lambda表达式,这更加明确。