是否可以在方法调用链中引用链式对象?
Is it possible to reference the chained object in a method call chain?
我有一个构建器调用链,其中一个调用必须附加到默认值,例如
var x = new X()
.setA(1)
.setB(2)
x = x.setList(x.getList :+ "itemtoappend")
有什么方法可以内联 setList 调用吗?
(X 是第 3 方库)
我希望有一个关键字,比如 "chain",像这样使用:
val x = new X()
.setA(1)
.setB(2)
.setList(chain.getList :+ "itemtoappend")
假设我没有能力在 X 上编写 appendToList 方法,并且不想编写和隐式转换 to/from 具有 appendToList 的 class MyX。
我认为标准方法是编写一个既可以设置又可以获取的方法,并传递给一个函数。你会称它为
val x = new X()
.setA(1)
.setB(2)
.list(_ :+ "itemtoappend")
您似乎想在构建对象的同时访问该对象两次。
class X {
def setA(a: Int): X = this
def setB(b: Int): X = this
def setList(ss: Seq[String]): X = this
def getList = Seq("head")
}
val x: X = Option( new X().setA(1).setB(2)
).map(z => z.setList(z.getList :+ "itemtoappend")).get
我有一个构建器调用链,其中一个调用必须附加到默认值,例如
var x = new X()
.setA(1)
.setB(2)
x = x.setList(x.getList :+ "itemtoappend")
有什么方法可以内联 setList 调用吗? (X 是第 3 方库)
我希望有一个关键字,比如 "chain",像这样使用:
val x = new X()
.setA(1)
.setB(2)
.setList(chain.getList :+ "itemtoappend")
假设我没有能力在 X 上编写 appendToList 方法,并且不想编写和隐式转换 to/from 具有 appendToList 的 class MyX。
我认为标准方法是编写一个既可以设置又可以获取的方法,并传递给一个函数。你会称它为
val x = new X()
.setA(1)
.setB(2)
.list(_ :+ "itemtoappend")
您似乎想在构建对象的同时访问该对象两次。
class X {
def setA(a: Int): X = this
def setB(b: Int): X = this
def setList(ss: Seq[String]): X = this
def getList = Seq("head")
}
val x: X = Option( new X().setA(1).setB(2)
).map(z => z.setList(z.getList :+ "itemtoappend")).get