草庐IT

lv_switch

全部标签

java - Kotlin 'when' 语句与 Java 'switch'

Kotlin中的模式匹配很好,而且它不会执行下一个模式匹配这一事实在90%的用例中都很好。在Android中,当数据库更新时,如果我们不设置中断以使代码看起来像这样,我们会使用Java开关属性继续下一个案例:switch(oldVersion){case1:upgradeFromV1();case2:upgradeFromV2();case3:upgradeFromV3();}因此,如果某人拥有DB版本1的应用,但错过了DBv2的应用版本,他将执行所有需要的升级代码。转换为Kotlin,我们会遇到这样的困惑:when(oldVersion){1->{upgradeFromV1()upg

java - Kotlin 'when' 语句与 Java 'switch'

Kotlin中的模式匹配很好,而且它不会执行下一个模式匹配这一事实在90%的用例中都很好。在Android中,当数据库更新时,如果我们不设置中断以使代码看起来像这样,我们会使用Java开关属性继续下一个案例:switch(oldVersion){case1:upgradeFromV1();case2:upgradeFromV2();case3:upgradeFromV3();}因此,如果某人拥有DB版本1的应用,但错过了DBv2的应用版本,他将执行所有需要的升级代码。转换为Kotlin,我们会遇到这样的困惑:when(oldVersion){1->{upgradeFromV1()upg

ios - 在 Obj-C 中,我如何制作一个 switch 语句来评估类,而不仅仅是数字?

在Obj-C中,开关只能评估数字。我希望能够使用它来比较对象的类别,例如:switch(currentSubViewController.class){caseUITableViewController.class:break;caseUICollectionViewController.class:break;}有什么办法可以实现吗?我真的很想能够使用一个switch,因为它使得不同案例的阅读变得如此容易,而且我可以在未来的任何时候添加更多案例。有什么想法吗? 最佳答案 如本forumpost中所述你最好应用LiskovSubst

swift - Swift 中导入的 NS_OPTIONS (RawOptionSetType) 的 Switch 语句?

Swift中的switch语句更具表现力。我想知道这是否可能:让我们以UIViewAutoresizing为例。它在Objective-C中定义如下:typedefNS_OPTIONS(NSUInteger,UIViewAutoresizing){UIViewAutoresizingNone=0,UIViewAutoresizingFlexibleLeftMargin=1我可以像枚举一样在Swift中使用它:letfoo=UIViewAutoresizing([.FlexibleHeight,.FlexibleTopMargin])是否可以使用switch语句而不是多个if语句?iff

swift 延迟特殊性 : why is code in case:defer is invoked before the end of the switch scope?

case.foo:defer{baz()}fallthroughcase.bar:baz()在我们进入酒吧场景之前已经到达。这是预期的还是编译器bork?我期待baz()在切换结束时被调用作用域还是函数作用域???!? 最佳答案 case:block的结尾是该block范围的结尾...fallthrough语句不维护范围。考虑以下几点:defer{print("outerdeferred")}lett=1switcht{case0:print("0")case1:print("1")defer{print("deferred")}f

swift - Swift2中的switch语句可以比较哪种类型的值

我想知道在switch语句中可以比较哪种类型的值。官方文档说:Casescanmatchmanydifferentpatterns,includingintervalmatches,tuples,andcaststoaspecifictype还有吗?我可以在switch语句中比较类类型吗?假设我有一个A类:classA{}func==(lhs:A,rhs:A)->Bool{returntrue}然后我可以检查类A的两个对象是否相等。但我仍然不能这样做:vara1=A();vara2=A()switcha1{casea2://dosomething}虽然我们很少写这样的代码,但我还是很好

Swift:在没有 switch 语句的情况下打开枚举

使用Optionals,您可以轻松地检查结果并使用非nil或传递nil,只需一行:guardx=couldReturnNil()else{returnnil}//Afterhere,xcanbeusedsafely.Callingfunction//candothesame,sonilgetspassedbackdownthecallingstack.这使得返回类型错误处理变得容易。我想要的是其他枚举的类似单行代码。就像.Fail/.Succeed的经典例子。例如:enumResult{.Fail(String)//Errormessage..Succeed(MyType)//Some

swift - 我如何重写此 switch 语句,以便以特定方式对字符串数组进行排序

我如何重写此代码,以便按以下方式对字符串数组进行排序:首先,以搜索词作为前缀的字符串。其次,仅包含搜索词的字符串。最后,其他所有内容均按字母顺序排序。stringArray=stringArray.sorted(by:{switch($0.hasPrefix(searchTerm),$1.hasPrefix(searchTerm){case(true,true):return$0 最佳答案 您只需要更改switch语句的最后一个case,因为如果当前元素和下一个元素都不以searchTerm开头,您只想更改顺序,否则您仍然更喜欢以s

swift - 使用 switch 语句时扩展枚举中使用的元组的语法

考虑我有一个包含2个案例的枚举,其中一个案例有一个元组:enumMyEnum{caseFirstCase(output:(someString:String,someInt:Int))caseSecondCase(error:ErrorType)}当我创建一个枚举常量时:letmyEnum=MyEnum.FirstCase(output:(someString:"myString",someInt:3))我可以使用switch语句并对每种情况做一些事情switchmyEnum{case.FirstCase(letoutput):print(output.someInt)//prints

swift - 重构两个相似的 swift switch 语句

我有几个switch语句,我最初将一些JSON值转换为用户友好的名称(convertCategoryValueToName)。稍后,在应用程序的不同部分,我需要根据用户友好的名称进行一些检查,并且我编写了一个相应的开关来将名称转换回其原始值(convertCategoryNameToValue)。switch语句很长,我不喜欢重复。有没有办法将这项工作重构到一个Switch中?缩短的开关示例...funcconvertCategoryValueToName(category:String)->String?{varcategoryName:String?switchcategory{c