-2

我已经在这样的scala方法中进行了检查。

def run(beamServices: BeamServices): Unit = {
   if ((beamServices.strategy.planSelectorForRemoval.equals("Check with list of strings")) && (!beamServices.modeChoiceClass.equals("ModeChoiceLCCM"))) {
       logger.error("Simulation breaks")            
   }
}

上面的检查仅适用于 singleString但我必须检查 10 左右Strings。如果我像上面一样在这里放 10 次检查,那将是非常乏味和冗长的代码。所以我决定让我创建一个列表或Arrray这样的字符串,而不是单独编写 10 个检查。

val listOfString = Array{"String1","String2","String3"....."String10"}

并尝试List像这样实现 in 条件。

def run(beamServices: BeamServices): Unit = {
  if ((beamServices.strategy.planSelectorForRemoval.equals(listOfString.foreach(x => x))) && (!beamServices.modeChoiceClass.equals("ModeChoiceLCCM"))) {
     logger.error("Simulation breaks")            
   }
}

我知道上面的实现是错误的。我写它只是为了让你知道我想说什么。请建议我一些经典的解决方案

4

2 回答 2

4

我猜,您要问的是如何检查给定字符串是否与其他几个字符串之一匹配。

如果是这种情况,答案将是使用Set

val stringsToMatch = Set("Foo", "Bar", "Baz")
if (!stringsToMatch(beamServices.modelChoice)) { doStuff }
于 2018-12-04T16:06:35.557 回答
0
val listOfClasses = List("ClassA","ClassB","ClassC"....."ClassJ"}

def run(beamServices: BeamServices): Unit = {
   if ((beamServices.strategy.planSelectorForRemoval.equals("check with 10 classes")) && (!listOfCLasses.contains(beamServices.modeChoiceClass))) {
       logger.error("Simulation breaks")            
   }
}
于 2018-12-04T16:45:06.073 回答