Swift快速入门

2016-07-18  本文已影响591人  金歌漫舞

****1.常量和变量****

注意:Int & Double 都是结构体,而不是基本数据类型

整数默认的类型是Int
let x:Int = 200
小数的默认类型是Double
let y:Double = 10.5

不同类型之间不能直接计算
print(x + Int(y))
print(Double(x) + y)

let & var的选择

****Optional可选项****

// Optional 可能有两个值 (None / Some)
// 格式(1. 自动推导):var 变量名: Optional = 值
    let x: Optional = 20
// 格式(2. 指定类型):var 变量
    let y: Optional<Int> = 30
// 格式(3. 简化格式):var 变量名: 类型? = 值
    let z: Int? = 10

 // 可选值在参与计算前,必须`解包 unwarping`
 // 只有`解包(unwrap)`后才能参与计算
 // 在变量后添加一个 `!`,可以强行解包
 // `?` 是用于定义的
// `!` 是用于解包的,程序员要对每一个 `!` 负责
  print(x! + y! + z!)
 // 常量可选项必须要设置初始值
 let x: Int? //= 20
 x = 20
 // 变量可选项默认值是 nil
 var y: Int? //= 10
 y = 20

 // unexpectedly found nil while unwrapping an Optional    value
 // 在对可选项解包时发现 nil,会报错!
  if y == nil {
     print("y值为 nil")
  } else {
    print(x! + y!)
 }

常见错误
翻译
在对可选项[解包]是发现nil

****??运算符****

注意:?? 的优先级低,在使用时,应该注意使用()

var str: String? = "老王"

// 注意 `??` 的优先级低,在使用时,应该注意使用 `()`
print((str ?? "无名") + " 你好")
print(str ?? "无名" + " 你好")

****控制流****

if

****三目运算符****

适当的运用三木,能够让代码写的更加简洁

****可选项判断****

****可选项条件判断****

  //: 1> 初学 swift 一不小心就会让 if 的嵌套层次很深,让代码变得很丑陋
  if let u = url {
  if u.host == "www.baidu.com" {
     let request = NSURLRequest(URL: u)
   }
}

 //: 2> 使用 where 关键字,
 if let u = url where u.host == "www.baidu.com" {
   let request = NSURLRequest(URL: u)
}

****多个可选项判断****

    //: 3> 可以使用 `,` 同时判断多个可选项是否为空
     let oName: String? = "张三"
     let oNo: Int? = 100

     if let name = oName {
       if let no = oNo {
         print("姓名:" + name + " 学号: " + String(no))
       }
     }

  if let name = oName, let no = oNo {
     print("姓名:" + name + " 学号: " + String(no))
 }

判断之后对变量需要修改
let oName: String? = "张三"
let oNum: Int? = 18

 if var name = oName, num = oNum {

     name = "李四"
      num = 1

     print(name, num)
 }

****guard****

 - guard 是与 if let 相反的语法,Swift 2.0 推出的

  let oName: String? = "张三"
  let oNum: Int? = 18

   guard let name = oName else {
     print("name 为空")
     return
   }

    guard let num = oNum else {
      print("num 为空")
      return
    }

    // 代码执行至此,name & num 都是有值的
     print(name)
    print(num)

****switch****

注意:..< 和 ... 用于定义 Range 类型,左右都不要添加空格

格式: for 变量 in 范围 { // 代码 }

    for _ in 0...10 {
     print("hello")
   }

****字符串****

在 Swift 中绝大多数的情况下,推荐使用 String 类型

****字符串演练****

 let name = "老王"
 let age = 18
 let point = CGPoint(x: 100, y: 200)

  print("\(name) \(age) \(point)")

我和我的小伙伴再也不要考虑 stringWithFormat 了 :D

****String & Range的结合****

****字典****
-定义
-同样适用[]定义字典

上一篇下一篇

猜你喜欢

热点阅读