做一个简短的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 }
它利用哈希集中的搜索,所以在某些条件下也可能是最快的解决方案。