为什么所有实例都没有将其发送到函数的.map方法?

时间:2018-12-06 19:40:31

标签: scala

我经常发现自己像这样“内而外”地编写代码

doOtherWork(doWork(someObject))

这段代码的读法类似于“处理获取someObject结果的结果”

如果我可以编写为左右可读的代码,代码似乎会更清晰

someObject.map(doWork).map(doOtherWork)

此代码的读法类似于“将someObject发送到函数,然后使用另一个函数处理结果”

我发现自己正在编写函数

def applyFunction[T, U](someObject: T)(f: T => U): U = {
  f(someObject)
}

def doWork(x: Int): Int = {
  x * x
}

def doOtherWork(y: Int): Int = {
  y * 2
}

val z: Int = 5

applyFunction(z) {
  result2 => doOtherWork(applyFunction(result2) {
    result => doWork(result)
  })
}

这使每个操作都更加清晰,但仍然存在“由内而外”的问题。

我经常做的另一件事是将每个操作的结果保存在val中,然后将其传递给下一行的函数。这似乎是重复的。

关于以可读方式处理函数结果的任何建议吗?

0 个答案:

没有答案