日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)其它知識(shí) → swift語言介紹 swift編程語言入門

      swift語言介紹 swift編程語言入門

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西教程網(wǎng)時(shí)間:2014/6/6 13:06:16字體大。A-A+

      作者:西西小熊點(diǎn)擊:11次評(píng)論:1次標(biāo)簽: swift

      火狐firefoxV51.0 官方簡體中文版
      • 類型:瀏覽器類大。44.8M語言:中文 評(píng)分:6.2
      • 標(biāo)簽:
      立即下載

      swift是什么?

       swift是蘋果于wwdc 2014發(fā)布的編程語言,這里引用the swift programming language的原話:

       swift is a new programming language for ios and os x apps that builds on the best of c and objective-c  without the constraints of c compatibility.

       swift adopts safe programming patterns and adds modern features to make programming easier  more flexible and more fun.

       swift’s clean slate  backed by the mature and much-loved cocoa and cocoa touch frameworks  is an opportunity to imagine how software development works.

       swift is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language.

       簡單的說:

       swift用來寫ios和os x程序。(估計(jì)也不會(huì)支持其它屌絲系統(tǒng))
       swift吸取了c和objective-c的優(yōu)點(diǎn),且更加強(qiáng)大易用。
       swift可以使用現(xiàn)有的cocoa和cocoa touch框架。
       swift兼具編譯語言的高性能(performance)和腳本語言的交互性(interactive)。
       swift語言概覽

       基本概念

       注:這一節(jié)的代碼源自the swift programming language中的a swift tour。

       hello  world

       類似于腳本語言,下面的代碼即是一個(gè)完整的swift程序。

       1
       println(" hello  world" )
       變量與常量

       swift使用var聲明變量,let聲明常量。

       1
       2
       3
       var myvariable = 42
       myvariable = 50
       let myconstant = 42
       類型推導(dǎo)

       swift支持類型推導(dǎo)(type inference),所以上面的代碼不需指定類型,如果需要指定類型:

       1
       let explicitdouble : double = 70
       swift不支持隱式類型轉(zhuǎn)換(implicitly casting),所以下面的代碼需要顯式類型轉(zhuǎn)換(explicitly casting):

       1
       2
       3
       let label = " the width is " 
       let width = 94
       let width = label + string(width)
       字符串格式化

       swift使用\(item)的形式進(jìn)行字符串格式化:

       1
       2
       3
       4
       let apples = 3
       let oranges = 5
       let applesummary = " i have \(apples) apples." 
       let applesummary = " i have \(apples + oranges) pieces of fruit." 
       數(shù)組和字典

       swift使用[]操作符聲明數(shù)組(array)和字典(dictionary):

       1
       2
       3
       4
       5
       6
       7
       8
       var shoppinglist = [" catfish"   " water"   " tulips"   " blue paint" ]
       shoppinglist[1] = " bottle of water" 

       var occupations = [
           " malcolm" : " captain"  
           " kaylee" : " mechanic"  
       ]
       occupations[" jayne" ] = " public relations" 
       一般使用初始化器(initializer)語法創(chuàng)建空數(shù)組和空字典:

       1
       2
       let emptyarray = string[]()
       let emptydictionary = dictionary< string  float> ()
       如果類型信息已知,則可以使用[]聲明空數(shù)組,使用[:]聲明空字典。

       控制流

       概覽

       swift的條件語句包含if和switch,循環(huán)語句包含for-in、for、while和do-while,循環(huán)/判斷條件不需要括號(hào),但循環(huán)/判斷體(body)必需括號(hào):

       1
       2
       3
       4
       5
       6
       7
       8
       9
       let individualscores = [75  43  103  87  12]
       var teamscore = 0
       for score in individualscores {
           if score >  50 {
               teamscore += 3
           } else {
               teamscore += 1
           }
       }
       可空類型

       結(jié)合if和let,可以方便的處理可空變量(nullable variable)。對(duì)于空值,需要在類型聲明后添加?顯式標(biāo)明該類型可空。

       1
       2
       3
       4
       5
       6
       7
       8
       var optionalstring: string? = " hello" 
       optionalstring == nil

       var optionalname: string? = " john appleseed" 
       var gretting = " hello!" 
       if let name = optionalname {
           gretting = " hello  \(name)" 
       }
       靈活的switch

       swift中的switch支持各種各樣的比較操作:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       let vegetable = " red pepper" 
       switch vegetable {
       case " celery" :
           let vegetablecomment = " add some raisins and make ants on a log." 
       case " cucumber"   " watercress" :
           let vegetablecomment = " that would make a good tea sandwich." 
       case let x where x.hassuffix(" pepper" ):
           let vegetablecomment = " is it a spicy \(x)?" 
       default:
           let vegetablecomment = " everything tastes good in soup." 
       }
       其它循環(huán)

       for-in除了遍歷數(shù)組也可以用來遍歷字典:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       let interestingnumbers = [
           " prime" : [2  3  5  7  11  13] 
           " fibonacci" : [1  1  2  3  5  8] 
           " square" : [1  4  9  16  25] 
       ]
       var largest = 0
       for (kind  numbers) in interestingnumbers {
           for number in numbers {
               if number >  largest {
                   largest = number
               }
           }
       }
       largest
       while循環(huán)和do-while循環(huán):

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       var n = 2
       while n <  100 {
           n = n   2
       }
       n

       var m = 2
       do {
           m = m   2
       } while m <  100
       m
       swift支持傳統(tǒng)的for循環(huán),此外也可以通過結(jié)合..(生成一個(gè)區(qū)間)和for-in實(shí)現(xiàn)同樣的邏輯。

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       var firstforloop = 0
       for i in 0..3 {
           firstforloop += i
       }
       firstforloop

       var secondforloop = 0
       for var i = 0  i <  3  ++i {
           secondforloop += 1
       }
       secondforloop
       注意:swift除了..還有...:..生成前閉后開的區(qū)間,而...生成前閉后閉的區(qū)間。

       函數(shù)和閉包

       函數(shù)

       swift使用func關(guān)鍵字聲明函數(shù):

       1
       2
       3
       4
       func greet(name: string  day: string) ->  string {
           return " hello \(name)  today is \(day)." 
       }
       greet(" bob"   " tuesday" )
       通過元組(tuple)返回多個(gè)值:

       1
       2
       3
       4
       func getgasprices() ->  (double  double  double) {
           return (3.59  3.69  3.79)
       }
       getgasprices()
       支持帶有變長參數(shù)的函數(shù):

       1
       2
       3
       4
       5
       6
       7
       8
       9
       func sumof(numbers: int...) ->  int {
           var sum = 0
           for number in numbers {
               sum += number
           }
           return sum
       }
       sumof()
       sumof(42  597  12)
       函數(shù)也可以嵌套函數(shù):

       1
       2
       3
       4
       5
       6
       7
       8
       9
       func returnfifteen() ->  int {
           var y = 10
           func add() {
               y += 5
           }
           add()
           return y
       }
       returnfifteen()
       作為頭等對(duì)象,函數(shù)既可以作為返回值,也可以作為參數(shù)傳遞:

       1
       2
       3
       4
       5
       6
       7
       8
       func makeincrementer() ->  (int ->  int) {
           func addone(number: int) ->  int {
               return 1 + number
           }
           return addone
       }
       var increment = makeincrementer()
       increment(7)
       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       func hasanymatches(list: int[]  condition: int ->  bool) ->  bool {
           for item in list {
               if condition(item) {
                   return true
               }
           }
           return false
       }
       func lessthanten(number: int) ->  bool {
           return number <  10
       }
       var numbers = [20  19  7  12]
       hasanymatches(numbers  lessthanten)
       閉包

       本質(zhì)來說,函數(shù)是特殊的閉包,swift中可以利用{}聲明匿名閉包:

       1
       2
       3
       4
       5
       numbers.map({
           (number: int) ->  int in
           let result = 3   number
           return result
           })
       當(dāng)閉包的類型已知時(shí),可以使用下面的簡化寫法:

       1
       numbers.map({ number in 3   number })
       此外還可以通過參數(shù)的位置來使用參數(shù),當(dāng)函數(shù)最后一個(gè)參數(shù)是閉包時(shí),可以使用下面的語法:

       1
       sort([1  5  3  12  2]) { $0 >  $1 }
       類和對(duì)象

       創(chuàng)建和使用類

       swift使用class創(chuàng)建一個(gè)類,類可以包含字段和方法:

       1
       2
       3
       4
       5
       6
       class shape {
           var numberofsides = 0
           func simpledescription() ->  string {
               return " a shape with \(numberofsides) sides." 
           }
       }
       創(chuàng)建shape類的實(shí)例,并調(diào)用其字段和方法。

       1
       2
       3
       var shape = shape()
       shape.numberofsides = 7
       var shapedescription = shape.simpledescription()
       通過init構(gòu)建對(duì)象,既可以使用self顯式引用成員字段(name),也可以隱式引用(numberofsides)。

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       class namedshape {
           var numberofsides: int = 0
           var name: string

           init(name: string) {
               self.name = name
           }

           func simpledescription() ->  string {
               return " a shape with \(numberofsides) sides." 
           }
       }
       使用deinit進(jìn)行清理工作。

       繼承和多態(tài)

       swift支持繼承和多態(tài)(override父類方法):

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       class square: namedshape {
           var sidelength: double

           init(sidelength: double  name: string) {
               self.sidelength = sidelength
               super.init(name: name)
               numberofsides = 4
           }

           func area() ->  double {
               return sidelength   sidelength
           }

           override func simpledescription() ->  string {
               return " a square with sides of length \(sidelength)." 
           }
       }
       let test = square(sidelength: 5.2  name: " my test square" )
       test.area()
       test.simpledescription()
       注意:如果這里的simpledescription方法沒有被標(biāo)識(shí)為override,則會(huì)引發(fā)編譯錯(cuò)誤。

       屬性

       為了簡化代碼,swift引入了屬性(property),見下面的perimeter字段:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       21
       22
       23
       24
       25
       26
       class equilateraltriangle: namedshape {
           var sidelength: double = 0.0

           init(sidelength: double  name: string) {
               self.sidelength = sidelength
               super.init(name: name)
               numberofsides = 3
           }

           var perimeter: double {
           get {
               return 3.0   sidelength
           }
           set {
               sidelength = newvalue / 3.0
           }
           }

           override func simpledescription() ->  string {
               return " an equilateral triagle with sides of length \(sidelength)." 
           }
       }
       var triangle = equilateraltriangle(sidelength: 3.1  name: " a triangle" )
       triangle.perimeter
       triangle.perimeter = 9.9
       triangle.sidelength
       注意:賦值器(setter)中,接收的值被自動(dòng)命名為newvalue。

       willset和didset

       equilateraltriangle的構(gòu)造器進(jìn)行了如下操作:

       為子類型的屬性賦值。
       調(diào)用父類型的構(gòu)造器。
       修改父類型的屬性。
       如果不需要計(jì)算屬性的值,但需要在賦值前后進(jìn)行一些操作的話,使用willset和didset:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       class triangleandsquare {
           var triangle: equilateraltriangle {
           willset {
               square.sidelength = newvalue.sidelength
           }
           }
           var square: square {
           willset {
               triangle.sidelength = newvalue.sidelength
           }
           }
           init(size: double  name: string) {
               square = square(sidelength: size  name: name)
               triangle = equilateraltriangle(sidelength: size  name: name)
           }
       }
       var triangleandsquare = triangleandsquare(size: 10  name: " another test shape" )
       triangleandsquare.square.sidelength
       triangleandsquare.square = square(sidelength: 50  name: " larger square" )
       triangleandsquare.triangle.sidelength
       從而保證triangle和square擁有相等的sidelength。

       調(diào)用方法

       swift中,函數(shù)的參數(shù)名稱只能在函數(shù)內(nèi)部使用,但方法的參數(shù)名稱除了在內(nèi)部使用外還可以在外部使用(第一個(gè)參數(shù)除外),例如:

       1
       2
       3
       4
       5
       6
       7
       8
       class counter {
           var count: int = 0
           func incrementby(amount: int  numberoftimes times: int) {
               count += amount   times
           }
       }
       var counter = counter()
       counter.incrementby(2  numberoftimes: 7)
       注意swift支持為方法參數(shù)取別名:在上面的代碼里,numberoftimes面向外部,times面向內(nèi)部。

       ?的另一種用途

       使用可空值時(shí),?可以出現(xiàn)在方法、屬性或下標(biāo)前面。如果?前的值為nil,那么?后面的表達(dá)式會(huì)被忽略,而原表達(dá)式直接返回nil,例如:

       1
       2
       3
       let optionalsquare: square? = square(sidelength: 2.5  name: " optional 
       square" )
       let sidelength = optionalsquare?.sidelength
       當(dāng)optionalsquare為nil時(shí),sidelength屬性調(diào)用會(huì)被忽略。

       枚舉和結(jié)構(gòu)

       枚舉

       使用enum創(chuàng)建枚舉——注意swift的枚舉可以關(guān)聯(lián)方法:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       21
       enum rank: int {
           case ace = 1
           case two  three  four  five  six  seven  eight  nine  ten
           case jack  queen  king
               func simpledescription() ->  string {
               switch self {
                   case .ace:
                       return " ace" 
                   case .jack:
                       return " jack" 
                   case .queen:
                       return " queen" 
                   case .king:
                       return " king" 
                   default:
                       return string(self.toraw())
               }
           }
       }
       let ace = rank.ace
       let acerawvalue = ace.toraw()
       使用toraw和fromraw在原始(raw)數(shù)值和枚舉值之間進(jìn)行轉(zhuǎn)換:

       1
       2
       3
       if let convertedrank = rank.fromraw(3) {
           let threedescription = convertedrank.simpledescription()
       }
       注意枚舉中的成員值(member value)是實(shí)際的值(actual value),和原始值(raw value)沒有必然關(guān)聯(lián)。

       一些情況下枚舉不存在有意義的原始值,這時(shí)可以直接忽略原始值:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       enum suit {
           case spades  hearts  diamonds  clubs
               func simpledescription() ->  string {
               switch self {
                   case .spades:
                       return " spades" 
                   case .hearts:
                       return " hearts" 
                   case .diamonds:
                       return " diamonds" 
                   case .clubs:
                       return " clubs" 
               }
           }
       }
       let hearts = suit.hearts
       let heartsdescription = hearts.simpledescription()
       除了可以關(guān)聯(lián)方法,枚舉還支持在其成員上關(guān)聯(lián)值,同一枚舉的不同成員可以有不同的關(guān)聯(lián)的值:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       enum serverresponse {
           case result(string  string)
           case error(string)
       }

       let success = serverresponse.result(" 6:00 am"   " 8:09 pm" )
       let failure = serverresponse.error(" out of cheese." )

       switch success {
           case let .result(sunrise  sunset):
               let serverresponse = " sunrise is at \(sunrise) and sunset is at \(sunset)." 
           case let .error(error):
               let serverresponse = " failure... \(error)" 
       }
       結(jié)構(gòu)

       swift使用struct關(guān)鍵字創(chuàng)建結(jié)構(gòu)。結(jié)構(gòu)支持構(gòu)造器和方法這些類的特性。結(jié)構(gòu)和類的最大區(qū)別在于:結(jié)構(gòu)的實(shí)例按值傳遞(passed by value),而類的實(shí)例按引用傳遞(passed by reference)。

       1
       2
       3
       4
       5
       6
       7
       8
       9
       struct card {
           var rank: rank
           var suit: suit
           func simpledescription() ->  string {
               return " the \(rank.simpledescription()) of \(suit.simpledescription())" 
           }
       }
       let threeofspades = card(rank: .three  suit: .spades)
       let threeofspadesdescription = threeofspades.simpledescription()
       協(xié)議(protocol)和擴(kuò)展(extension)

       協(xié)議

       swift使用protocol定義協(xié)議:

       1
       2
       3
       4
       protocol exampleprotocol {
           var simpledescription: string { get }
           mutating func adjust()
       }
       類型、枚舉和結(jié)構(gòu)都可以實(shí)現(xiàn)(adopt)協(xié)議:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       class simpleclass: exampleprotocol {
           var simpledescription: string = " a very simple class." 
           var anotherproperty: int = 69105
           func adjust() {
               simpledescription += "  now 100  adjusted." 
           }
       }
       var a = simpleclass()
       a.adjust()
       let adescription = a.simpledescription

       struct simplestructure: exampleprotocol {
           var simpledescription: string = " a simple structure" 
           mutating func adjust() {
               simpledescription += "  (adjusted)" 
           }
       }
       var b = simplestructure()
       b.adjust()
       let bdescription = b.simpledescription
       擴(kuò)展

       擴(kuò)展用于在已有的類型上增加新的功能(比如新的方法或?qū)傩裕,swift使用extension聲明擴(kuò)展:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       extension int: exampleprotocol {
           var simpledescription: string {
               return " the number \(self)" 
           }
           mutating func adjust() {
               self += 42
           }
       }
       7.simpledescription
       泛型(generics)

       swift使用< > 來聲明泛型函數(shù)或泛型類型:

       1
       2
       3
       4
       5
       6
       7
       8
       func repeat< itemtype> (item: itemtype  times: int) ->  itemtype[] {
           var result = itemtype[]()
           for i in 0..times {
               result += item
           }
           return result
       }
       repeat(" knock"   4)
       swift也支持在類、枚舉和結(jié)構(gòu)中使用泛型:

       1
       2
       3
       4
       5
       6
       7
       // reimplement the swift standard library s optional type
       enum optionalvalue< t>  {
           case none
           case some(t)
       }
       var possibleinteger: optionalvalue< int>  = .none
       possibleinteger = .some(100)
       有時(shí)需要對(duì)泛型做一些需求(requirements),比如需求某個(gè)泛型類型實(shí)現(xiàn)某個(gè)接口或繼承自某個(gè)特定類型、兩個(gè)泛型類型屬于同一個(gè)類型等等,swift通過where描述這些需求:

       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
       11
       func anycommonelements < t  u where t: sequence  u: sequence  t.generatortype.element: equatable  t.generatortype.element == u.generatortype.element>  (lhs: t  rhs: u) ->  bool {
           for lhsitem in lhs {
               for rhsitem in rhs {
                   if lhsitem == rhsitem {
                       return true
                   }
               }
           }
           return false
       }
       anycommonelements([1  2  3]  [3])
       swift語言概覽就到這里,有興趣的朋友請(qǐng)進(jìn)一步閱讀the swift programming language。

       接下來聊聊個(gè)人對(duì)swift的一些感受。

       個(gè)人感受

       注意:下面的感受純屬個(gè)人意見,僅供參考。

       大雜燴

       盡管我接觸swift不足兩小時(shí),但很容易看出swift吸收了大量其它編程語言中的元素,這些元素包括但不限于:

       屬性(property)、可空值(nullable type)語法和泛型(generic type)語法源自c#。
       格式風(fēng)格與go相仿(沒有句末的分號(hào),判斷條件不需要括號(hào))。
       python風(fēng)格的當(dāng)前實(shí)例引用語法(使用self)和列表字典聲明語法。
       haskell風(fēng)格的區(qū)間聲明語法(比如1..3,1...3)。
       協(xié)議和擴(kuò)展源自objective-c(自家產(chǎn)品隨便用)。
       枚舉類型很像java(可以擁有成員或方法)。
       class和struct的概念和c#極其相似。
       注意這里不是說swift是抄襲——實(shí)際上編程語言能玩的花樣基本就這些,況且swift選的都是在我看來相當(dāng)不錯(cuò)的特性。

       而且,這個(gè)大雜燴有一個(gè)好處——就是任何其它編程語言的開發(fā)者都不會(huì)覺得swift很陌生——這一點(diǎn)很重要。

       拒絕隱式(refuse implicity)

       swift去除了一些隱式操作,比如隱式類型轉(zhuǎn)換和隱式方法重載這兩個(gè)坑,干的漂亮。

       swift的應(yīng)用方向

       我認(rèn)為swift主要有下面這兩個(gè)應(yīng)用方向:

       教育

       我指的是編程教育,F(xiàn)有編程語言最大的問題就是交互性奇差,從而導(dǎo)致學(xué)習(xí)曲線陡峭。相信swift及其交互性極強(qiáng)的編程環(huán)境能夠打破這個(gè)局面,讓更多的人——尤其是青少年,學(xué)會(huì)編程。

       這里有必要再次提到brec victor的inventing on principle,看了這個(gè)視頻你就會(huì)明白一個(gè)交互性強(qiáng)的編程環(huán)境能夠帶來什么。

       應(yīng)用開發(fā)

       現(xiàn)有的ios和os x應(yīng)用開發(fā)均使用objective-c,而objective-c是一門及其繁瑣(verbose)且學(xué)習(xí)曲線比較陡峭的語言,如果swift能夠提供一個(gè)同現(xiàn)有obj-c框架的簡易互操作接口,我相信會(huì)有大量的程序員轉(zhuǎn)投swift;與此同時(shí),swift簡易的語法也會(huì)帶來相當(dāng)數(shù)量的其它平臺(tái)開發(fā)者。

       總之,上一次某家大公司大張旗鼓的推出一門編程語言及其編程平臺(tái)還是在2000年(微軟推出c#),將近15年之后,蘋果推出swift——作為開發(fā)者,我很高興能夠見證一門編程語言的誕生。

       以上。

      媒體評(píng)測(cè):

      一、Swift降低了開發(fā)者的使用門檻

      Swift語言非常契合本屆WWDC的slogan:Write the code,change the world。(寫代碼,改變世界)。

      Swift這個(gè)新的語言集中了很多其它高級(jí)語言的影子,集成了他們的優(yōu)點(diǎn)。它和Go、Ruby、Python等語言都有些神似。并且它的語法更加接近自然語言,使得編程的過程變得更加簡單。這些變化進(jìn)一步降低了蘋果平臺(tái)上App開發(fā)門檻,延續(xù)蘋果一貫主張的用App來解決一切問題。這將是蘋果生態(tài)鏈中重要的一個(gè)環(huán)節(jié)。

      隨Swift的推出的新版集成開發(fā)環(huán)境Xcode已經(jīng)完全支持使用Swift。Xcode所附帶的在線文檔中也在原有的Objective-C內(nèi)容的旁邊放上了Swift的說明,可見蘋果是多么重視Swift的發(fā)展。這也正好印證了前面提到的,蘋果在降低自己生態(tài)鏈中最總要一環(huán)的門檻,這會(huì)使得蘋果自身的競(jìng)爭力進(jìn)一步加強(qiáng)。

      二、Swift語言還有不完善之處

      目前看來,Swift還不夠完善,比如支持的復(fù)雜數(shù)據(jù)結(jié)構(gòu)比較有限,可以使用的第三方庫也較少。但是它的出現(xiàn),代表著接近自然語言語法的編程方法正在快速的發(fā)展,讓大家看見一個(gè)美好的未來:每個(gè)希望編寫App的人都可以很容易上手,并快速開發(fā)出相當(dāng)不錯(cuò)的App。

      當(dāng)然,Swift也會(huì)帶來許多局限性,如跨平臺(tái)等問題等:和Objective-C一樣,基于LLVM編譯器的它目前是無法在Android、Windows Phone上工作。所以目前對(duì)跨平臺(tái)的App開發(fā)者來說,它肯定不會(huì)是首選。并且,從逆向工程的角度來看,Swift和Objective-C共享運(yùn)行時(shí)函數(shù),讓它看起來更像一個(gè)Objective-C優(yōu)雅的包裝。

      三、是一次編程語言的革新

      Swift語言中的Playground功能是一大亮點(diǎn)。Playground的實(shí)時(shí)編譯和顯示結(jié)果使得編程變得更加平民化和有趣。并且這種創(chuàng)新的交互式編程方法很可能會(huì)被延展到教育領(lǐng)域。說不定哪天大學(xué)里面枯燥乏味的語言和算法課程就被這種直觀的形式所顛覆。

      總體來說,Swift的前景是美好的。Swift的語法相當(dāng)簡單。綜合了很多優(yōu)秀計(jì)算機(jī)語言的優(yōu)點(diǎn)。隨著Swift語言的逐漸成熟,會(huì)贏得更多開發(fā)者的支持。

      Swift 語言的基本運(yùn)算符:

      運(yùn)算符(operator)是用于檢查、更改或組合值的特殊符號(hào)或短語。例如,加法運(yùn)算符(+)求兩個(gè)數(shù)字的加和(用例 let i = 1 + 2)。更復(fù)雜的例子包括邏輯與(logical AND)運(yùn)算符 &&(用例 if 已輸入門禁密碼 && 已通過視網(wǎng)膜掃描) 以及自增運(yùn)算符 ++i,后者是將 i 存儲(chǔ)的值加上 1的便捷寫法。

      Swift 支持標(biāo)準(zhǔn) C 的大多數(shù)運(yùn)算符,并改進(jìn)了部分行為特性,以避免常見的編碼錯(cuò)誤。賦值運(yùn)算符(=)不會(huì)返回值,這樣可避免在打算使用等于運(yùn)算符(==)的地方誤用前者。算術(shù)運(yùn)算符(+、-、*、/、% 等)會(huì)偵測(cè)并阻止值溢出,可避免處理超出可存儲(chǔ)值域范圍的數(shù)時(shí)出現(xiàn)意料之外的結(jié)果。如果需要支持溢出,可以選用 Swift 的溢出運(yùn)算符,詳見 溢出運(yùn)算符。

      與 C 語言不同,Swift 允許對(duì)浮點(diǎn)數(shù)求余(%)。Swift 還提供了兩種 C 語言沒有的區(qū)間運(yùn)算符(a..b 與 a...b),作為表達(dá)值域范圍的便捷寫法。

      本章講解 Swift 中的常用運(yùn)算符。高級(jí)運(yùn)算符 一章涉及了 Swift 的高級(jí)運(yùn)算符,并講解了如何自定義運(yùn)算符,以及讓標(biāo)準(zhǔn)運(yùn)算符支持自定義類型的運(yùn)算。

      Apple Swift編程語言入門中文教程
      10.0
      類別: 電子資料    大。34KB    語言: 中文
      查看詳細(xì)信息 >>

        火狐瀏覽器
        (87)火狐瀏覽器
        火狐瀏覽器安卓版功能特性快速快速瀏覽從啟動(dòng)到頁面加載,到平移和縮放,都有超快的瀏覽體驗(yàn)智能工具欄輕點(diǎn)智能工具欄,即可獲得經(jīng)常訪問的網(wǎng)站列表,書簽和歷史記錄,點(diǎn)擊訪問,無需輸入便捷簡潔易用標(biāo)簽頁便于您同時(shí)瀏覽多個(gè)站點(diǎn)加載項(xiàng)提供無圖閱讀模式,流量受限時(shí)啟用也能便捷查看網(wǎng)頁智能同步從任何裝置存取您瀏覽器的歷史紀(jì)錄,書簽,密碼,以及開啟的標(biāo)簽頁閱讀自動(dòng)將零散的文章組合成美觀易讀的頁面插件提供多種功能插件以豐富您的瀏...更多>>
        • IE10(Internet Explorer 10 for Wi

          11-16 / 21.7M

          推薦理由:微軟已經(jīng)正式發(fā)布nternet Explorer 10 for Windows 7,這一版本讓W(xué)indows 7用戶等待了好久。之前IE10一直僅
        • 谷歌瀏覽器2017(Chrome)v57.0.2987

          02-02 / 41.4M

          推薦理由:谷歌瀏覽器GoogleChrome將簡約的界面設(shè)計(jì)與先進(jìn)的技術(shù)相融合,谷歌瀏覽器官方下載讓網(wǎng)絡(luò)瀏覽變得更快速、安
        • ie11 64位 for win7官方正式版

          01-29 / 87.2M

          推薦理由:ie11 win7 64位官方正式版適用于win7 64位的系統(tǒng)。微軟為IE11添加了一些新特性,比如對(duì)WebGL的支持,以及對(duì)
        • 百度瀏覽器2017V8.7.100.4208 官方

          01-06 / 106M

          推薦理由:百度瀏覽器的使命是讓人們更流暢的上網(wǎng)、更愉悅的在線生活。通過百度的開放整合和精準(zhǔn)識(shí)別,百度瀏覽器2017
        • 360極速瀏覽器8.7.0.208 官方正式版

          10-27 / 39.4M

          推薦理由:360極速瀏覽器7.3Beta版火速上線,國內(nèi)率先更新chrome26內(nèi)核的雙核瀏覽器!7.3版本基于chrome26正式版內(nèi)核開
        • 獵豹安全瀏覽器v6.0.114.13396r1 官

          10-30 / 53.2M

          推薦理由:獵豹瀏覽器是首款雙核安全瀏覽器,更安全,更快速,更炫酷.獵豹首創(chuàng)BIPS安全體系和網(wǎng)購敢賠服務(wù),安全防護(hù)更全面
        ie瀏覽器
        (39)ie瀏覽器
        西西軟件園提供好用的瀏覽器官方下載,包括,瀏覽器真的是越來越強(qiáng)大了,界面極其清爽簡潔新增網(wǎng)頁固定功能智能網(wǎng)址地址欄快速訪問入口獨(dú)立標(biāo)簽頁下載管理器開發(fā)人員工具多功能地址欄加載管理和跟蹤保護(hù)功能支持和加速功能。...更多>>
        • ie11 64位 for win7官方正式版

          01-29 / 87.2M

          推薦理由:ie11 win7 64位官方正式版適用于win7 64位的系統(tǒng)。微軟為IE11添加了一些新特性,比如對(duì)WebGL的支持,以及對(duì)
        • ie瀏覽器(Internet Explorer 11)v1

          01-29 / 28.1M

          推薦理由:微軟Internet Explorer 11今天正式發(fā)布,Windows 7以上版本均可以安裝,而Windows 8.1系統(tǒng)則內(nèi)置了這一版本
        • IE10 64位版win7 X64官方正式版(IE

          02-26 / 41.7M

          推薦理由:微軟已經(jīng)正式發(fā)布nternet Explorer 10 for Windows 7,這一版本讓W(xué)indows 7用戶等待了好久。之前IE10一直僅
        • IE10(Internet Explorer 10 for Wi

          11-16 / 21.7M

          推薦理由:微軟已經(jīng)正式發(fā)布nternet Explorer 10 for Windows 7,這一版本讓W(xué)indows 7用戶等待了好久。之前IE10一直僅
        • IE10預(yù)覽版官方第四版

          02-15 / 19.5M

          推薦理由:IE10平臺(tái)預(yù)覽版第四版(PP4),使得IE瀏覽器的靈活性得到進(jìn)一步增強(qiáng)。新版IE10在HTML5技術(shù)上帶來了相當(dāng)大的
        • IE7 for xp /2003V7.0.5730.13官方

          10-30 / 13.7M

          推薦理由:IE7中文版支持中文域名,包含了許多重大安全改進(jìn)的Internet Explorer 7終于發(fā)布了最新正式版本。微軟通過其
        opera瀏覽器
        (34)opera瀏覽器
        目前市場(chǎng)上的安卓瀏覽器種類繁多,不過有一款瀏覽器卻一直活躍在安卓系統(tǒng)上,那就是歐朋瀏覽器。歐朋瀏覽器是全球最流行的手機(jī)瀏覽器的中文版本。歐朋手機(jī)瀏覽器基于開發(fā),延續(xù)小巧快速節(jié)省流量的優(yōu)點(diǎn),同時(shí)集成了諸多貼近中國用戶的社會(huì)化應(yīng)用。歐朋瀏覽器最大的特色就是快,與同類產(chǎn)品相比優(yōu)勢(shì)比較明顯。體積小,適應(yīng)性好,同時(shí)支持智能非智能手機(jī)。歐朋瀏覽器特點(diǎn)歐朋瀏覽器支持智能預(yù)讀智能縮放手勢(shì)操作,外加時(shí)尚個(gè)性化的界面...更多>>
        • Opera Next最新版v25.0.1614.68官方

          11-14 / 29.7M

          推薦理由:Opera Next 是 Opera 最新推出的基于 Chromium 內(nèi)核的瀏覽器,瀏覽器排版引擎由原先的 Presto 更換為高性能
        • Opera瀏覽器V42.0 Build 2393.517

          01-28 / 40.2M

          推薦理由:Opera瀏覽器起初是一款挪威OperaSoftwareASA公司制作的支持多頁面標(biāo)簽式瀏覽的網(wǎng)絡(luò)瀏覽器,Opera瀏覽器由于
        • ie8.0瀏覽器 FoR Xp(win 2003)官方

          05-15 / 15.7M

          推薦理由:微軟全新推出的最新版本網(wǎng)頁瀏覽器IE8(InternetExplorer8),是xp系統(tǒng)能使用的IE最新版,更新版本IE9、IE10微
        • 歐朋瀏覽器(Opera Mini)v12.2.0.8官

          11-09 / 3.2M

          推薦理由:operamini,是全球最受歡迎的手機(jī)瀏覽器,小編本人也在使用中,確實(shí)好用哈~能在大幅提升瀏覽速度的同時(shí)將流
        • 歐朋瀏覽器java通用版v6.7 官方版

          05-16 / 328KB

          推薦理由: 歐朋瀏覽器java通用版~~~ opera mini大家都知道把!!!大名鼎鼎的挪威瀏覽器巨頭opera推出的手機(jī)版瀏覽
        • 歐朋瀏覽器V12.4.0.14安卓版

          01-22 / 3.7M

          推薦理由:歐朋瀏覽器forandroid針對(duì)移動(dòng)設(shè)備與個(gè)人電腦之間的隔閡,發(fā)布了最新版本,全面支持手機(jī)與電腦之間個(gè)人信息
        瀏覽器2016
        (24)瀏覽器2016
        西西軟件園強(qiáng)力推薦的瀏覽器下載排行榜產(chǎn)品,目前市場(chǎng)上的瀏覽器產(chǎn)品眾多,大家可能會(huì)有選擇性困難,到底哪款瀏覽器速度最快,體驗(yàn)最好最安全這些都是在使用瀏覽器當(dāng)中常見的疑問,如何選擇一款最好的瀏覽器,其實(shí)最適合的就是最好的;鸷鼮g覽器是一個(gè)完全開放源代碼,任何人都可以自由參與開發(fā)的,支持多種操作系統(tǒng)的瀏覽器,因?yàn)槠鋸?qiáng)大的可定制性和豐富的擴(kuò)展程序而成為最有個(gè)性的瀏覽器.和支持最好,彈窗攔截和更勝一籌,執(zhí)行速度...更多>>
        • 傲游(maxthon)5.0.1.3000 官方最新

          12-07 / 42.6M

          推薦理由:傲游發(fā)布傲游云瀏覽器,為用戶提供跨平臺(tái)、多設(shè)備的無縫瀏覽。據(jù)悉,傲游云瀏覽器將不再是簡單的標(biāo)簽同步,
        • 百度瀏覽器2017V8.7.100.4208 官方

          01-06 / 106M

          推薦理由:百度瀏覽器的使命是讓人們更流暢的上網(wǎng)、更愉悅的在線生活。通過百度的開放整合和精準(zhǔn)識(shí)別,百度瀏覽器2017
        • 360極速瀏覽器8.7.0.208 官方正式版

          10-27 / 39.4M

          推薦理由:360極速瀏覽器7.3Beta版火速上線,國內(nèi)率先更新chrome26內(nèi)核的雙核瀏覽器!7.3版本基于chrome26正式版內(nèi)核開
        • 谷歌瀏覽器2017(Chrome)v57.0.2987

          02-02 / 41.4M

          推薦理由:谷歌瀏覽器GoogleChrome將簡約的界面設(shè)計(jì)與先進(jìn)的技術(shù)相融合,谷歌瀏覽器官方下載讓網(wǎng)絡(luò)瀏覽變得更快速、安
        • 搜狗瀏覽器智慧版V4.2.6.11794 官方

          03-23 / 32.0M

          推薦理由:搜狗瀏覽器配備強(qiáng)勁雙核動(dòng)力引擎(內(nèi)置IE8內(nèi)核)、全網(wǎng)加速、網(wǎng)速保護(hù)、防假死、下載加速,5級(jí)加速體系打造
        • IE10 64位版win7 X64官方正式版(IE

          02-26 / 41.7M

          推薦理由:微軟已經(jīng)正式發(fā)布nternet Explorer 10 for Windows 7,這一版本讓W(xué)indows 7用戶等待了好久。之前IE10一直僅
        firefox
        (10)firefox
        西西軟件園提供最新版的瀏覽器官方下載,火狐是開源網(wǎng)頁瀏覽器,使用引擎即非內(nèi)核,可在多種操作系統(tǒng)如,和上運(yùn)行,最新版在性能上有非常顯著的提升,大幅降低的內(nèi)存占用和更快的渲染速度,給用戶更為流暢和高速的上網(wǎng)瀏覽體驗(yàn),同時(shí)也讓開發(fā)者能夠開發(fā)出更為快速的網(wǎng)絡(luò)應(yīng)用和網(wǎng)站。...更多>>
        • 火狐firefoxV51.0 官方簡體中文版

          02-13 / 44.8M

          推薦理由:MozillaFirefox火狐是開源網(wǎng)頁瀏覽器,使用Gecko引擎(即非ie內(nèi)核),可在多種操作系統(tǒng)如Windows,Mac和linux
        • 火狐瀏覽器Firefox for AndroidV51

          02-13 / 30.6M

          推薦理由:FirefoxMobile由大名鼎鼎的Firefox瀏覽器公司Mozilla官方提供,是一款基于移動(dòng)平臺(tái)的手機(jī)和平板設(shè)備專用瀏覽
        • flash player firefox25.0.0.104

          02-07 / 19.3M

          推薦理由:AdobeFlashPlayer是一個(gè)跨平臺(tái)、基于瀏覽器的應(yīng)用程序運(yùn)行時(shí),它可以跨屏幕和瀏覽器原汁原味地查看具有表現(xiàn)
        • 火狐瀏覽器(firefox)v49.0.2 官方中

          10-23 / 43.4M

          推薦理由:火狐瀏覽器由謀智基金會(huì)開發(fā)的網(wǎng)絡(luò)瀏覽器,采用自己獨(dú)有的內(nèi)核,從而讓用戶獲得絕佳的瀏覽體驗(yàn)!支持瀏覽器
        • 火狐firefox for macV51.0 官方最新

          01-25 / 82.9M

          推薦理由:最新版的Firefox在性能上有非常顯著的提升,大幅降低的內(nèi)存占用和更快的渲染速度,給用戶更為流暢和高速的上
        • 火狐極速版(Firefox Plus)14.0.1 綠

          07-27 / 28M

          推薦理由:火狐極速版(Firefox Plus)Mozilla Firefox Plus(FoxPlus)是VeryCD旗下一款基于Firefox的增強(qiáng)版瀏覽器軟件.F

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(1)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)