Swiftѧϰ֮·04-ö¾Ù
ö¾Ù
ö¾ÙÓ﷨ʹÓà enum ¹Ø¼ü´ÊÀ´´´½¨Ã¶¾Ù²¢ÇÒ°ÑËüÃǵÄÕû¸ö¶¨Òå·ÅÔÚÒ»¶Ô´óÀ¨ºÅÄÚ: enum CompassPoint {
case North
case South
case East
case West
}
ö¾ÙÖж¨ÒåµÄÖµ(Èç North,South,East ºÍ West )ÊÇÕâ¸öö¾ÙµÄ³ÉÔ±Öµ(»ò³ÉÔ±)¡£ÄãʹÓà case ¹Ø¼ü×ÖÀ´ ¶¨ÒåÒ»¸öеÄö¾Ù³ÉÔ±Öµ¡£ *×¢ÒâÓë C ºÍ Objective-C ²»Í¬,Swift µÄö¾Ù³ÉÔ±ÔÚ±»´´½¨Ê±²»»á±»¸³ÓèÒ»¸öĬÈϵÄÕûÐÍÖµ¡£ÔÚÉÏÃæµÄ ¹ØÁªÖµÔÚSwiftÖУ¬Ê¹ÓÃÈçÏ·½Ê½¶¨Òå±íʾÁ½ÖÖÉÌÆ·ÌõÐÎÂëµÄö¾Ù enum Barcode {
case UPCA(Int,Int,Int)
case QRCode(String)
}
ÒÔÉÏ´úÂë¿ÉÒÔÕâôÀí½â: ¡°¶¨ÒåÒ»¸öÃûΪ Barcode µÄö¾ÙÀàÐÍ,ËüµÄÒ»¸ö³ÉÔ±ÖµÊǾßÓÐ (Int,Int,Int) ÀàÐ͹ØÁªÖµµÄ UPCA,ÁíÒ» ¸ö³ÉÔ±ÖµÊǾßÓÐ String ÀàÐ͹ØÁªÖµµÄ QRCode ¡£¡± var productBarcode = Barcode.UPCA(8,85909,51226,3)
// ͬһ¸öÉÌÆ·¿ÉÒÔ±»·ÖÅäÒ»¸ö²»Í¬ÀàÐ͵ÄÌõÐÎÂë
productBarcode = .QRCode("ABCDEFGHIJKLMNOP")
Ôʼֵ×÷Ϊ¹ØÁªÖµµÄÌæ´úÑ¡Ôñ,ö¾Ù³ÉÔ±¿ÉÒÔ±»Ä¬ÈÏÖµ(³ÆÎªÔʼֵ)Ô¤Ìî³ä,ÕâЩÔʼֵµÄÀàÐͱØÐëÏàͬ¡£ enum ASCIIControlCharacter: Character {
case Tab = "t"
case LineFeed = "n"
case CarriageReturn = "r"
}
ÔʼֵµÄÒþʽ¸³ÖµÏÂÃæµÄö¾ÙÊǶÔ֮ǰ Planet Õâ¸öö¾ÙµÄÒ»¸öϸ»¯,ÀûÓÃÕûÐ͵ÄÔʼֵÀ´±íʾÿ¸öÐÐÐÇÔÚÌ«ÑôϵÖеÄ˳Ðò: enum Planet: Int {
case Mercury = 1,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
}
ÔÚÉÏÃæµÄÀý×ÓÖÐ,Plant.Mercury µÄÏÔʽÔʼֵΪ 1,Planet.Venus µÄÒþʽÔʼֵΪ 2,ÒÀ´ÎÀàÍÆ¡£ ÏÂÃæµÄÀý×ÓÊÇ CompassPoint ö¾ÙµÄϸ»¯,ʹÓÃ×Ö·û´®ÀàÐ͵ÄÔʼֵÀ´±íʾ¸÷¸ö·½ÏòµÄÃû³Æ: enum CompassPoint: String {
case North,East,West
}
ÉÏÃæÀý×ÓÖÐ,CompassPoint.South ÓµÓÐÒþʽÔʼֵ South,ÒÀ´ÎÀàÍÆ¡£ ʹÓÃö¾Ù³ÉÔ±µÄ rawValue ÊôÐÔ¿ÉÒÔ·ÃÎʸÃö¾Ù³ÉÔ±µÄÔʼֵ: let earthsOrder = Planet.Earth.rawValue
// earthsOrder ֵΪ 3
let sunsetDirection = CompassPoint.West.rawValue
// sunsetDirection ֵΪ "West"
// ʹÓÃÔʼֵ³õʼ»¯Ã¶¾ÙʵÀý
let possiblePlanet = Planet(rawValue: 7)
// possiblePlanet ÀàÐÍΪ Planet? ֵΪ Planet.Uranus
µÝ¹éö¾ÙµÝ¹éö¾Ù(recursive enumeration) ÊÇÒ»ÖÖö¾ÙÀàÐÍ,ËüÓÐÒ»¸ö»ò¶à¸öö¾Ù³ÉԱʹÓøÃö¾ÙÀàÐ͵ÄʵÀý×÷Ϊ¹ØÁª Öµ¡£Ê¹Óõݹéö¾Ùʱ,±àÒëÆ÷»á²åÈëÒ»¸ö¼ä½Ó²ã¡£Äã¿ÉÒÔÔÚö¾Ù³ÉԱǰ¼ÓÉÏ indirect À´±íʾ¸Ã³ÉÔ±¿ÉµÝ¹é¡£ // µÚÒ»ÖÖ·½Ê½
enum ArithmeticExpression {
case Number(Int)
indirect case Addition(ArithmeticExpression,ArithmeticExpression)
indirect case Multiplication(ArithmeticExpression,ArithmeticExpression)
}
// µÚ¶þÖÖ·½Ê½
indirect enum ArithmeticExpression {
case Number(Int)
case Addition(ArithmeticExpression,ArithmeticExpression)
case Multiplication(ArithmeticExpression,ArithmeticExpression)
}
ʵÀý·½·¨ func evaluate(expression: ArithmeticExpression) -> Int {
switch expression {
case .Number(let value):
return value
case .Addition(let left,let right):
return evaluate(left) + evaluate(right)
case .Multiplication(let left,let right):
return evaluate(left) * evaluate(right)
}
} // ¼ÆËã (5 + 4) * 2
let five = ArithmeticExpression.Number(5)
let four = ArithmeticExpression.Number(4)
let sum = ArithmeticExpression.Addition(five,four)
let product = ArithmeticExpression.Multiplication(sum,ArithmeticExpression.Number(2)) print(evaluate(product)) // Êä³ö "18"
¸öÈ˸ϽÅö¾ÙµÝ¹é¸ö¹ØÁªÖµ²î²»¶à £¨±à¼£ºÀî´óͬ£© ¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ! |
- C#ʹÓö¯Ì¬Îı¾¿ò/°´Å¥/Íø¸ñɾ³ýÐÐ
- react-native-androidÖ®³õ´ÎÏàʶ
- VB6»ù±¾Êý¾Ý¿âÓ¦Ó㨾ţ©£º¡¾Ôö²¹Æª¡¿²»Í¬µÄÒýÇæµÄÓï·¨²îÒì
- ¿´Ð¡°×ÈçºÎ½â¾öajax¿çÓòÎÊÌâ
- c# ¨C Ò»¸ö32λϵͳÉϵij¤ÕûÐ͹¤×÷£¿
- ruby-on-rails ¨C Ϊhas_manyºÍbelongs_to´´½¨RailsÄ£Ð͹ØÁª
- ʹÓÃÔÉúµÄNSXmlParser½âÎöxmlÊý¾Ý
- xmlÓëjavaBeanµÄ»¥Ïàת»¯
- ÕýÔò±í´ïʽ ¨C ÕýÔò±í´ïʽƥÅä,ÓÃÓÚɾ³ý¾äµã×Ö·ûµÄijЩÓ÷¨
- OEMAddressTable½éÉÜ