如果条件如何传递scala List或Array?

时间:2018-12-04 15:32:16

标签: arrays scala list

我已经在这样的scala方法中放了一个支票。

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

以上检查仅适用于单个String,但我必须检查大约10 Strings。如果我像上面那样在这里放置10张支票,那将是非常繁琐且冗长的代码。因此,我决定不再像这样单独写10张支票,而是创建一个这样的字符串列表或Arrray

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

并尝试在这种情况下实现List

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

我知道上述实现是错误的。我只是写了它,目的是让您了解我要说的话。 请给我一些经典的解决方案

2 个答案:

答案 0 :(得分:4)

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

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

val stringsToMatch = Set("Foo", "Bar", "Baz")
if (!stringsToMatch(beamServices.modelChoice)) { doStuff }

答案 1 :(得分: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")            
   }
}