不知道什么是正确的名称,但我正在寻找更多关于“链接函数调用”的信息。例如:去链式函数调用?
foo.DoSomething().WithThisOptionalThing()
所以我可以使用foo.DoSomething()
但可能性增加.WithThisOptionalThing()
它做了额外的。这可能吗?请指出正确的方向/提供一些例子。
不知道什么是正确的名称,但我正在寻找更多关于“链接函数调用”的信息。例如:去链式函数调用?
foo.DoSomething().WithThisOptionalThing()
所以我可以使用foo.DoSomething()
但可能性增加.WithThisOptionalThing()
它做了额外的。这可能吗?请指出正确的方向/提供一些例子。
基本上,你可以让所有的配置函数不断的返回主要的“对象”,同时把你的东西链接在一起,并有一个最终的“Go”函数或任何你想调用它来执行动作。
这里有play
package main
import (
"fmt"
)
func main() {
DoSomething().Go()
DoSomething().WithThisOptionalThing().Go()
}
type Chainable struct {
thing bool
}
func DoSomething() *Chainable {
return &Chainable{}
}
func (c *Chainable) WithThisOptionalThing() *Chainable {
c.thing = true
return c
}
func (c *Chainable) Go() error {
// Actually do something now that it's been configured
fmt.Println("Thing is", c.thing)
return nil
}
你只需要知道一个例子:当涉及到链接的东西你的方法应该要么始终
pointers
并返回pointers
或
values
,并返回values
或
values
,并返回pointers
至少他们知道我工作的组合。我找不到任何文件。如果你知道发生了什么,请告诉我。
如果'DoSomething()'返回带有'WithThisOptionalThing()'方法的对象,就可能与其他语言相同。虽然我不明白你在问什么。 – Flimzy
让我想起建造者模式:) –