Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala:for循环中的条件保护_Scala_For Loop_Filter_Guard - Fatal编程技术网

Scala:for循环中的条件保护

Scala:for循环中的条件保护,scala,for-loop,filter,guard,Scala,For Loop,Filter,Guard,我需要一些关于Scala中for循环中的保护的启示:我的代码是 for { enterprise <- itr preferName <- enterprise \* qpreferedName variantName <- enterprise \* qvariantName attrVRes <- enterprise \* qtype \@ attrRes if (text(preferName).contains(keyword) || tex

我需要一些关于Scala中for循环中的保护的启示:我的代码是

for {
  enterprise <- itr
  preferName <- enterprise \* qpreferedName
  variantName <- enterprise \* qvariantName
  attrVRes <- enterprise \* qtype \@ attrRes
  if (text(preferName).contains(keyword) || text(variantName).contains(keyword))
} {
//loop code
}
用于{

企业由于
关键字
的定义似乎超出了理解范围,因此我会在那里设置一个布尔值,然后将其添加到防护中。例如:

val keywordInvalid = keyword.isEmpty // Or however you want to define your condition

for {
  enterprise <- itr
  preferName <- enterprise \* qpreferedName
  variantName <- enterprise \* qvariantName
  attrVRes <- enterprise \* qtype \@ attrRes
  if keywordInvalid || text(preferName).contains(keyword) || text(variantName).contains(keyword)
} {
  //loop code
}

由于
关键字
似乎是在理解之外定义的,因此我会在那里设置一个布尔值,然后将其添加到防护中。例如:

val keywordInvalid = keyword.isEmpty // Or however you want to define your condition

for {
  enterprise <- itr
  preferName <- enterprise \* qpreferedName
  variantName <- enterprise \* qvariantName
  attrVRes <- enterprise \* qtype \@ attrRes
  if keywordInvalid || text(preferName).contains(keyword) || text(variantName).contains(keyword)
} {
  //loop code
}

您可以定义这样的实用程序

def textContains(str: String): String => Boolean = str match {
  case "" => Function.const(true)
  case _ => text(_).contains(str)
}
并将其用作

for {
 /* ... */
if Seq(preferName,variantName).exists(textContains(keyword))
} yield ???

您可以定义这样的实用程序

def textContains(str: String): String => Boolean = str match {
  case "" => Function.const(true)
  case _ => text(_).contains(str)
}
并将其用作

for {
 /* ... */
if Seq(preferName,variantName).exists(textContains(keyword))
} yield ???

谢谢你的回答!谢谢你的回答!谢谢你!这是我想到的第一个代码,但是它不起作用,如果关键字为空,那么我就没有输出。但是我的想法是如果关键字为空,就得到所有的输出。谢谢你!这是我想到的第一个代码,但是它不起作用,如果关键字为空,那么我就没有输出。但是我的想法是得到我想要的所有输出f关键字为空。我建议看看这个或这个,寻找更好的使用单子的方法。无关风格说明:无论出于何种原因,理解和模式匹配中的保护条件都不需要包含括号。我不确定为什么这与香草if语句不一致,但事实就是这样。我建议看看这或这是使用单子的更好方法。无关风格注:无论出于何种原因,理解和模式匹配中的保护条件不需要包含paren。我不确定这与vanilla if语句不一致的原因,但事实就是如此。