Swift 2 if case 用法

Swift 2 if case 用法,第1张

概述Swift 2: Pattern Matching with “if case” Posted on June 20th, 2015 While looking through slides for What’s New in Swift again, I’ve decided to instead play around with and write down the new Swift 2 i Swift 2: Pattern Matching with “if case”

Posted onJune 20th,2015

While looking through slIDes forWhat’s New in Swiftagain,I’ve decIDed to instead play around with and write down the new Swift 2 idioms here for easy reference for myself (and hopefully others). I’m going to start with Pattern Matching with if case.

The Setup

Let’s say you’re making a Sign In Form in your app. You’ll have the following fIElds:

1 2 3 4 5 6 enum SignUpFormFIEld { case Firstname ( String ) case Lastname ( String ) case EmailAddress ( String ) case dob ( NSDate ) }

And of course,as the user enters his or her Date of Birth,you want toshow them that they were born before Taylor Swiftif that is actually the case. Taylor Swift’s birthday is just a constant in your app:

1 2 3 4 5 6 7 8 let taylorSwiftsBday: NSDate = { let gregorianCalendar = NSCalendar (calendarIDentifIEr: NSCalendarIDentifIErGregorian ) let dateComponents = NSDateComponents () dateComponents.day = 13 dateComponents.month = 12 dateComponents.year = 1989 return gregorianCalendar?.dateFromComponents(dateComponents) ?? NSDate () }()
BS2 (Before Swift 2)

So Now,it’s time to write the function to compare the user’s birthday to Taylor Swift’s birthday. BS2,you might have done it as follows:

1 2 3 4 5 6 7 8 9 10 func bornBeforeTaylorSwift(signUpFormFIEld: SignUpFormFIEld ) { switch signUpFormFIEld { case . dob ( let otherBday) where taylorSwiftsBday.compare(otherBday) == . OrderedDescending : print ( "Fun fact: You were born before Taylor Swift!" ) default : break } }

Notice the need for a full onswitch statement / Syntax,and thedefault case used to do nothing.

Swift 2

These issues mentioned above been solved in Swift 2 with a much simplerpattern matching “if case”:

1 2 3 4 5 6 7 8 func bornBeforeTaylorSwift(signUpFormFIEld: SignUpFormFIEld ) { if case . dob ( let otherBday) = signUpFormFIEld where taylorSwiftsBday.compare(otherBday) == . OrderedDescending { print ( "Fun fact: You were born before Taylor Swift!" ) } }
Advanced Pattern Matching

Note that you can use the usual advanced pattern matching techniques in the “if case” statement that you’ve probably used in switch statements:

1 2 3 4 5 let numberOfTaylorSwiftSongsFavorited = 93 if case 0...225 = numberOfTaylorSwiftSongsFavorited { print ( "this is a valID number of favorited Taylor Swift Songs" ) }

I personally still have to get my brain to think of this way of writing my code naturally,but I’m sure it’ll come with practice and lots of refactoring!

总结

以上是内存溢出为你收集整理的Swift 2 if case 用法全部内容,希望文章能够帮你解决Swift 2 if case 用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存