是否有一种干净的方法有条件地应用一长串方法?我想做这样的事情。 (无论是否调用了method2,对象的类型都相同,因此method3仍然有效)
someObject
.method1()
if (some condition) {.method2()}
.method3()
这将实现与以下相同的效果,但我想避免针对每种条件完全重写它,即
if (some condition){
someObject
.method1()
.method2()
.method3()
}
else {
someObject
.method1()
.method3()
}
答案 0 :(得分:4)
例如,尝试使用pipe
链接运算符
import scala.util.chaining._
object SomeObject {
def method1 = { println("method1"); this }
def method2 = { println("method2"); this }
def method3 = { println("method3"); this }
}
SomeObject
.method1
.pipe(someObject => if (condition) someObject.method2 else someObject)
.method3
如果condition == false
输出,
method1
method3
否则输出
method1
method2
method3