赶时髦过了一遍Swift 语言....

Swift 语言
       2014年6月3日发布,替代OBJECT-C
       Swift is  a new  programming language for  creating iOS and OS X apps. Swift 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 reimagine how software development works.
 
文档
       https: //itunes.apple.com/us/book/the-swift-programming-language/id881256329?mt=11
       http: //download.csdn.net/detail/surfsky/7440835
 
 
helloWorld
     println( "Hello, world" )
 
 
-------------------------------------------------------------
基础
-------------------------------------------------------------
注释
     //
     /**/
 
分号
     单行无需加分号
     多个语句放在一行,需要加分号
 
 
变量
     var  myVariable = 42
 
常量
     let  myConstant = 42
     let  explicitDouble: Double = 70
 
 
-------------------------------------------------------------
数据类型
-------------------------------------------------------------
数字类型
     类型
           Int: Int32, Int64
           UInt: UInt32, Uint64
           Double
           Float
     各种表示方法
       let  decimalInteger = 17
       let  binaryInteger = 0b10001 // 17 in binary notation
       let  octalInteger = 0o21 // 17 in octal notation
       let  hexadecimalInteger = 0x11 // 17 in hexadecimal notation
       let  decimalDouble = 12.1875
       let  exponentDouble = 1.21875e1
       let  hexadecimalDouble = 0xC.3p0
       let  paddedDouble = 000123.456
       let  oneMillion = 1_000_000
 
布尔(boolean)
     let  orangesAreOrange = true
     let  turnipsAreDelicious = false
 
向量
     let  (statusCode, statusMessage) = (404, "Not Found" )
     let  (x, y) = (1, 2)
     let  http200Status = (statusCode: 200, description: "OK" )
     println( "The status code is \(http200Status.statusCode)" )
 
字符串
     let  label = "The width is "
     let  width = 94
     let  widthLabel = label + String(width)
     字符串相加
         let  apples = 3
         let  oranges = 5
         let  appleSummary = "I have \(apples) apples."
         let  fruitSummary = "I have \(apples + oranges) pieces of fruit."
数组
     var  shoppingList = [ "catfish" , "water" , "tulips" , "blue paint" ]
     shoppingList[1] = "bottle of water"
     var  occupations = [ "Malcolm" : "Captain" , "Kaylee" : "Mechanic" ,]
     occupations[ "Jayne" ] = "Public Relations"
     let  emptyArray = String[]()
     shoppingList = []
 
字典
     let  emptyDictionary = Dictionary<String, Float>()
     emptyDictionary = [:]
 
 
空(nil)和可为空对象
     var  serverResponseCode: Int? = 404
     serverResponseCode = nil
     ----------------------------------------------   
     let  possibleString: String? = "An optional string."
     println(possibleString!)
     let  assumedString: String! = "An implicitly unwrapped optional string."
     println(assumedString)
 
     
 
     
-------------------------------------------------------------
数据流
-------------------------------------------------------------
if
     if  i == 1 {
         // this example will compile successfully
     }
 
 
switch
     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."
     }
 
 
for
     var  firstForLoop = 0
     for  var  i = 0; i < 3; ++i {
         firstForLoop += 1
     }
     for  i in  0..3 {
         firstForLoop += i
     }
 
 
for (遍历数组)
     let  individualScores = [75, 43, 103, 87, 12]
     var  teamScore = 0
     for  score in  individualScores {
         if  score > 50 {
             teamScore += 3
         } else  {
             teamScore += 1
         }
     }
     
for (遍历字典)
     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
             }
         }
     }
 
 
 
while
     var  n = 2
     while  n < 100 {
         n = n * 2
     }
 
do ... while
     var  m = 2
     do  {
         m = m * 2
     } while  m < 100
     
     
断言(assert)
     let  age = -3
     assert(age >= 0, "A person's age cannot be less than zero" )
 
     
-------------------------------------------------------------
函数
-------------------------------------------------------------
函数定义和调用
     func greet(name: String, day: String) -> String {
         return  "Hello \(name), today is \(day)."
     }
     greet( "Bob" , "Tuesday" )
 
 
返回多个数据
     func getGasPrices() -> (Double, Double, Double) {
         return  (3.59, 3.69, 3.79)
     }
     getGasPrices()
 
不限个数参数
     func sumOf(numbers: Int...) -> Int {
         var  sum = 0
         for  number in  numbers {
             sum += number
         }
         return  sum
     }
     sumOf()
     sumOf(42, 597, 12)
 
 
嵌套函数
     func returnFifteen() -> Int {
         var  y = 10
         func add() {
             y += 5
         }
         add()
         return  y
     }
     returnFifteen()
 
 
返回函数变量
     func makeIncrementer() -> (Int -> Int) {
         func addOne(number: Int) -> Int {
             return  1 + number
         }
         return  addOne
     }
     var  increment = makeIncrementer()
     increment(7)
 
函数作为输入参数(类似lambda表达式)
     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)
 
闭包
     numbers.map({
         (number: Int) -> Int in
         let  result = 3 * number
         return  result
     })
 
用编号替代名字
     sort([1, 5, 3, 12, 2]) { $0 > $1 }
 
 
-------------------------------------------------------------
对象和类
-------------------------------------------------------------
类定义
     class  Shape {
         var  numberOfSides: Int = 0
         var  name: String
         init(name: String) {
             self.name = name
         }
         func simpleDescription() -> String {
             return  "A shape with \(numberOfSides) sides."
         }
     }
 
使用
     var  shape = Shape()
     shape.numberOfSides = 7
     var  shapeDescription = shape.simpleDescription()
 
 
self/super
     self  -> this
     super -> parent
     
 
继承
     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()
 
属性
     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)."
     }
 
willSet和didSet(属性的值设置前后处理)
     var  triangle: EquilateralTriangle {
         willSet {
             square.sideLength = newValue.sideLength
         }
     }
 
可为空对象方法调用
     let  optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square" )
     let  sideLength = optionalSquare?.sideLength
 
泛型
复制代码
struct Pair<T: Equatable> {
    let a: T!
    let b: T!
    init(a: T, b: T) {
        self.a = a
        self.b = b
    }
    func equal() -> Bool {
        return a == b
    }
}

let pair = Pair(a: 5, b: 10)
pair.a // 5
pair.b // 10
pair.equal() // false
 

let floatPair = Pair(a: 3.14159, b: 2.0)
floatPair.a // 3.14159
floatPair.b // 2.0
floatPair.equal() // false
复制代码

 

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
-------------------------------------------------------------
枚举和结构体
-------------------------------------------------------------
枚举
     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()
     if  let  convertedRank = Rank.fromRaw(3) {
         let  threeDescription = convertedRank.simpleDescription()
     }
 
 
看得有点晕
     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):
     }
 
 
结构体
     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()
     
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值