Scala:for循环中的条件保护
我需要一些关于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
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语句不一致的原因,但事实就是如此。