做一个简短的if语句

在我的代码中,我有这个if语句:

if (categoryName == "SomeName1" || categoryName == "SomeName2" || categoryName == "SomeName3" || categoryName == "SomeName4" || categoryName == "SomeName5" || categoryName == "SomeName6") { // Do something } 

我想知道如果我能缩短这个。 就像是:

 if (categoryName == "SomeName1" and "SomeName2" and "SomeName3" ...) { // Do something } 

在Kotlin有没有做这样的事情?

快速和肮脏

 if (Arrays.asList("SomeName1", "SomeName2", "SomeName3", "SomeName4", "SomeName5", "SomeName6").contains(categoryName)) { // Do something } 

更好

 val myList = Arrays.asList("SomeName1", "SomeName2", "SomeName3", "SomeName4", "SomeName5", "SomeName6"); if (myList.contains(categoryName)) { // Do something } 

编辑 Voddan的答案使用setOf更好。

你可以使用一个when语句。 语法类似于你所要求的:

 when (categoryName) { "SomeName1", "SomeName2", "SomeName3", "SomeName4", "SomeName5", "SomeName6" -> // Do something } 

如何切换语句?

 switch(categoryName) { case "SomeName1": case "SomeName2": case "SomeName3": case "SomeName4": case "SomeName5": case "SomeName6": // Do something break; default: // Do something else break; } 

您可以考虑使用正则expression式:

 if (categoryName.matches(Regex("SomeName[1-6]"))) { // Do something } 

最Kotlin ish解决方案IMO:

 val names = setOf("SomeName1", "SomeName2", "SomeName3", "SomeName4", "SomeName5", "SomeName6") if (categoryName in names) { // Do something } 

它利用哈希集中的搜索,所以在某些条件下也可能是最快的解决方案。