Swift學(xué)習(xí)歷程06 - 枚舉類型 結(jié)構(gòu)體

獻(xiàn)給一起學(xué)習(xí)的小伙伴

  • 做OC開發(fā)也快2年了,最近公司要求Swift來開發(fā),組里的小伙伴就叫我整理資料給他們,所以就抽空寫了這個(gè),每天寫一點(diǎn),把OC 和**Swift **的不同點(diǎn)都標(biāo)注出來,方便大家對比,我也小小的回顧一下,希望看的小伙伴們持續(xù)關(guān)注.
  • 今天大概說下枚舉類型渺蒿、結(jié)構(gòu)體的基本使用,開搞:

1- 結(jié)構(gòu)體

  • 結(jié)構(gòu)體(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合

  • 結(jié)構(gòu)體(struct)指的是一種數(shù)據(jù)結(jié)構(gòu)

  • 結(jié)構(gòu)體是值類型,在方法中傳遞時(shí)是值傳遞

  • 結(jié)構(gòu)的定義格式

   struct Location {
          var x : Double
          var y : Double
    }
   // 初始化結(jié)構(gòu)體
    struct Location {
       var x : Double
       var y : Double
    }

   // 創(chuàng)建結(jié)構(gòu)體
   let location = Location(x: 90, y: 90)

  • 結(jié)構(gòu)體的增強(qiáng)
  • 默認(rèn)情況下創(chuàng)建Location時(shí)使用Location(x: x值, y: y值)
  • 但是為了讓我們在使用結(jié)構(gòu)體時(shí)更加的靈活,swift還可以對構(gòu)造函數(shù)進(jìn)行擴(kuò)充
  • 擴(kuò)充的注意點(diǎn)
    • 在擴(kuò)充的構(gòu)造函數(shù)中必須保證成員變量是有值的
    • 擴(kuò)充的構(gòu)造函數(shù)會覆蓋原有的構(gòu)造函數(shù)
    struct Location {
       var x : Double
       var y : Double

       init(x : Double, y : Double) {
          self.x = x
          self.y = y
       }

        init(xyString : String) {
          let strs = xyString.componentsSeparatedByString(",")
           x = Double(strs.first!)!
           y = Double(strs.last!)!
        }
    }

   let location = Location(x: 100, y: 100)
   let location1 = Location(xyString: "100,100")
  • 為結(jié)構(gòu)體擴(kuò)充方法
    • 為了讓結(jié)構(gòu)體使用更加靈活,swift的結(jié)構(gòu)體中可以擴(kuò)充方法
    • 例子:為了Location結(jié)構(gòu)體擴(kuò)充兩個(gè)方法
    • 向水平方向移動的方法
    • 向垂直方向移動的方法
   struct Location {
       var x : Double
       var y : Double

       init(x : Double, y : Double) {
          self.x = x
          self.y = y
        }

       init(xyString : String) {
           let strs = xyString.componentsSeparatedByString(",")
           x = Double(strs.first!)!
           y = Double(strs.last!)!
        }

       mutating func moveH(x : Double) {
           self.x += x
       }

       mutating func moveV(y : Double) {
           self.y += y
       }
     }

2- 枚舉類型

  • 枚舉定義了一個(gè)通用類型的一組相關(guān)的值,使你可以在你的代碼中以一個(gè)安全的方式來使用這些值娜膘。
  • 在 C/OC 語言中枚舉指定相關(guān)名稱為一組整型值
  • Swift 中的枚舉更加靈活碱屁,不必給每一個(gè)枚舉成員提供一個(gè)值.也可以提供一個(gè)值是字符串宛逗,一個(gè)字符逻翁,或是一個(gè)整型值或浮點(diǎn)值
  • 枚舉類型的語法
    • 使用enum關(guān)鍵詞并且把它們的整個(gè)定義放在一對大括號內(nèi)
    • case關(guān)鍵詞表明新的一行成員值將被定義
    • 不像 C 和 Objective-C 一樣诲祸,Swift 的枚舉成員在被創(chuàng)建時(shí)不會被賦予一個(gè)默認(rèn)的整數(shù)值
    • 在上面的CompassPoints例子中矛缨,North,South舶担,East和West不是隱式的等于0坡疼,1,2和3
    • 所以不能像OC一樣 用簡寫
       enum CompassPoint {
            case North
            case South
            case East
            case West
        }

       enum Planet {
          case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
        }

  • 給枚舉類型賦值
  • 枚舉類型賦值可以是字符串/字符/整型/浮點(diǎn)型
  • 注意如果有給枚舉類型賦值,則必須在枚舉類型后面明確說明具體的類型
// 1.枚舉類型的賦值
   enum CompassPoint : Int {
      case North = 1
      case South = 2
      case East = 3
      case West = 4
   }

   enum Planet {
     case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
   }


// 2.枚舉類型的使用
   let p = Planet(rawValue: 3)

   if let p = p {
       switch p {
       case .Mercury:
           print("Mercury")
       case .Venus:
           print("Venus")
       case .Earth:
           print("Mercury")
       case .Mars:
           print("Mars")
       case .Jupiter:
           print("Jupiter")
       case .Saturn:
           print("Saturn")
       case .Uranus:
           print("Uranus")
       case .Neptune:
           print("Neptune")
       }
   }

以前的文章

Swift學(xué)習(xí)歷程01

Swift學(xué)習(xí)歷程02 - 判斷語句 循環(huán)語句

Swift學(xué)習(xí)歷程03 - 字符串 數(shù)組 字典

Swift學(xué)習(xí)歷程04 - 元組 可選類型 類型轉(zhuǎn)化

Swift學(xué)習(xí)歷程05 - 函數(shù) 類型轉(zhuǎn)化

今天就先寫這些了,還有其他事,還有一些小伙伴私信我,問我的微博 微信 ,我以后就統(tǒng)一在結(jié)尾都貼上吧!
博客:http://www.cnblogs.com/hongdongheng
微博:http://weibo.com/u/3041860075
微信:nan46825
希望小伙伴多多留言和點(diǎn)贊,和我交流.

寫于 2016年5月18日 晚

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衣陶,一起剝皮案震驚了整個(gè)濱河市柄瑰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剪况,老刑警劉巖教沾,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異译断,居然都是意外死亡授翻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門孙咪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堪唐,“玉大人,你說我怎么就攤上這事翎蹈』床ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵荤堪,是天一觀的道長合陵。 經(jīng)常有香客問我,道長逞力,這世上最難降的妖魔是什么曙寡? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮寇荧,結(jié)果婚禮上举庶,老公的妹妹穿的比我還像新娘。我一直安慰自己揩抡,他們只是感情好户侥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著峦嗤,像睡著了一般蕊唐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烁设,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天替梨,我揣著相機(jī)與錄音钓试,去河邊找鬼。 笑死副瀑,一個(gè)胖子當(dāng)著我的面吹牛弓熏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糠睡,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挽鞠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狈孔?” 一聲冷哼從身側(cè)響起信认,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎均抽,沒想到半個(gè)月后嫁赏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡到忽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年橄教,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喘漏。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖华烟,靈堂內(nèi)的尸體忽然破棺而出翩迈,到底是詐尸還是另有隱情,我是刑警寧澤盔夜,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布负饲,位于F島的核電站,受9級特大地震影響喂链,放射性物質(zhì)發(fā)生泄漏返十。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一椭微、第九天 我趴在偏房一處隱蔽的房頂上張望洞坑。 院中可真熱鬧,春花似錦蝇率、人聲如沸迟杂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽排拷。三九已至,卻和暖如春锅尘,著一層夾襖步出監(jiān)牢的瞬間监氢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪腐,地道東北人何鸡。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像牛欢,于是被迫代替她去往敵國和親骡男。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容