草庐IT

Switch-case

全部标签

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 - 对于 case let 使用 enumerated() 方法

我很困惑。我可以使用以下方法通过类型转换遍历数组:forcaseletproviderasProviderModelinproviders{provider.activated=true}但是我怎样才能在这里实现索引Swift风格呢?像这样:for(index,provider>)inproviders.enumerated(){provider.activated=true} 最佳答案 使用元组模式:forcase(letoffset,letproviderasProviderModel)inproviders.enumerate

swift - '?' 如何在 case let 声明中解包一个可选的?

为什么a?中的?在赋值时解包值?我只在可选链中看到过类似的行为,但据我所知,var上的?后面应该始终跟有调用、成员查找或下标。varx:Int?=42ifcaseleta?=x{print(a)} 最佳答案 这是选项模式的语法糖。optionpattern上的文档说:Anoptionalpatternmatchesvalueswrappedinasome(Wrapped)caseofanOptionalenumeration.Optionalpatternsconsistofanidentifierpatternfollowedim

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

ios - 使用 Switch 语句与 If-Else

我对将switch语句用于UITableView感到有些困惑。我正在尝试设置我的numberOfRowsInSection函数,但我的switch语句出现错误“二元运算符‘~=’无法应用于‘Bool’和‘Int’类型的操作数”:functableView(tableView:UITableView,numberOfRowsInSectionsection:Int)->Int{switchsection{casesection==0:returnprovinces.countcasesection==1:returnterritories.countdefault:return0}}我很