用于在Scala中理解,以便在If测试后仅平面映射未来[T]

用于在Scala中理解,以便在If测试后仅平面映射未来[T],scala,future,for-comprehension,Scala,Future,For Comprehension,我需要帮助使用一个if语句,该语句只应在理解期货交易的测试为false时运行。我是scala的新手,使用它作为我的向导 代码是 for { emptyResults: Boolean = areResultsEmpty(content) resp <- getResp(content) if !emptyResults } yield resp 我在这里查看了其他解决方案,包括和,但它们对解决此问题没有帮助。您不能在中的任何生成器之前进行分配以供理

我需要帮助使用一个if语句,该语句只应在理解期货交易的测试为false时运行。我是scala的新手,使用它作为我的向导

代码是

  for {
      emptyResults: Boolean = areResultsEmpty(content)
      resp <- getResp(content) if !emptyResults
      } yield resp

我在这里查看了其他解决方案,包括和,但它们对解决此问题没有帮助。

您不能在中的任何生成器之前进行分配以供理解

for {
  emptyResults: Boolean = areResultsEmpty(content) // Not allowed
  resp <- getResp(content) if !emptyResults
} yield resp
用于{
emptyResults:Boolean=AreResultSumpty(内容)//不允许

resp您不能在中的任何生成器之前赋值以供理解

for {
  emptyResults: Boolean = areResultsEmpty(content) // Not allowed
  resp <- getResp(content) if !emptyResults
} yield resp
用于{
emptyResults:Boolean=AreResultSumpty(内容)//不允许

resp您可以在理解表达式中调用
aresultsempty
a guard

for {
  resp <- getResp(content) if !areResultsEmpty(content)
} yield resp
用于{

resp您可以在理解表达式中调用
aresultsempty
a guard

for {
  resp <- getResp(content) if !areResultsEmpty(content)
} yield resp
用于{

respA
for
的理解是“语法糖”。这意味着在它被翻译成字节码之前,它首先被翻译成一种不同的、标准的语言结构


在本例中,您有一个生成器,
理解的
是“语法糖”。这意味着在它被翻译成字节码之前,它首先被翻译成不同的标准语言结构

在这种情况下,您有一个生成器,

val result = if (areResultsEmpty(content)) {
                . . . //some default
             } else {
                getResp(content).map(/*do work*/)
             }