美文网首页
Swift3.0 基础语法

Swift3.0 基础语法

作者: 笑忘书丶 | 来源:发表于2016-11-25 17:19 被阅读43次

    Swift特色

    • 苹果宣称Swift的特点是:快速、现代、安全、互动
    • Swift中取消了预编译指令包括宏
    • 可以使用现有的CocoaCocoa Touch 框架
    • Swift取消了Objective-C的指针 及其他不安全访问的使用
    • 舍弃Objective-C早期应用的smalltalk的语法,全面改为点语法
    • Swift被形容为“没有CObjective-C”(Objective-C without the C)
    • 提供类似Java的命名空间、泛型、运算对象重载
    • Swift3.0对Foundation框架做了重大调整
      • 去除NS前缀
      • 将绝大部分class转换为struct

    变量与常量

    • 变量:使用var声明
    var str: String = "浮生若梦"
    str = "sl"
    
    • 常量:使用let声明
    let count: Int = 10
    

    基本数据类型

    • 整形
      • 有符号整形:Int,Int8,Int16,Int32,Int64
      • 无符号整形:UInt,UInt8,UInt16,UInt32,UInt64
    • 浮点型
      • Float:32位浮点数类型
      • Double:64位浮点数类型
    • 布尔型:Bool (flase or true)

    字符串

    var str: String = ""
    
    // 1. 判断字符串是否为空
    if str.isEmpty {
        print("空字符串")
    }
    
    // 2. 获取字符数量:string.characters.count
    let str1 = "baidu.com"
    print("\(str1.characters.count)个字符")
    
    // 3.检查字符串是否有特定前缀/后缀:hasPrefix/hasSuffix
    if str1.hasPrefix("baidu") {
        print("百度")
    }
    if str1.hasSuffix("com") {
        print("hello")
    }
    
    // 4.可以用“\()”在字符串里包裹变量,常量
    let name = "浮生"
    print("欢迎\(name)")
    
    // 5.字符串的大写/小写/首字母大写
    let msg = "Welecome to chengdu"
    print(msg.uppercased())
    print(msg.lowercased())
    print(msg.capitalized)
    

    字符:Character

    let chr: Character = "@"
    

    元组

    let tuple = (name:"me",age:23)
    print("\(tuple.name)") //me
    print(tuple.age) //23
    print(tuple.0) //me
    print(tuple.1) //23
    print(tuple) //("me",23)
    

    Optional 可选项

    • 定义可选项
      对可选项解包

    • 要么有值,要么为nil

    • 参与计算前必须先解包

    • 常量可选项需要赋初始值

    • 变量定义可选项默认初始值是nil

    • ??操作符

    // 如果可选值为空,使用`??`后面的值代替
    var name: String? = nil
    print((name ?? "浮生若梦")) //浮生若梦
    name = "小霸王"
    print((name ?? "浮生若梦")) //小霸王
    
    • 可选解包 if let/var 连用
    var name: String? = nil
    if let n = name { //name=nil 不会打印
        print(n)
    } else {
        print("name为nil") //name为nil
    }
    name = "小霸王"
    if let n = name {
        print(n) //小霸王
    }
    
    • guard let可以减少if let 分支
          let name: String? = "浮生"
            
            guard let name = name else {
                print("name为nil")
                return
            }
            //执行至此,name一定有值
            print(name) // 浮生
    

    Switch

    • 可以对任意类型的值进行分支,不在局限为整数
    • 分支里一般不需要写break
    • 多值判断使用,分隔条件
    • 所有的分支都至少需要一条语句,如果什么都不做,就写break
    // 1. Swift中不需要在case块中显示地使用break跳出switch。如果想要实现C风格的落入特性,可以给需要的case分支插入fallthrough语句
    let fruit = "apple"
    switch fruit{
    case "apple":
        print("good")
        fallthrough
    case "banana","orange":
        print("great")
    default:
        print("bad")
    }
    
    // 2. case分支还可以进行区间匹配
    let age = 5
    switch age {
    case 0...11:
        print("小伙子")
    case 12...30:
        print("年轻人")
    default:
        print("大叔")
    }
    
    // 3.使用元组匹配(判断属于哪个象限)
    let point = (2,2)
    switch point {
    case (0,0):
        print("坐标在原点")
    case (_,0):
        print("坐标在x轴上")
    case (0,_):
        print("坐标在y轴上")
    case (-3...3, -3...3):
        print("坐标在长宽为6的正方形内")
    default:
        print("在什么地方")
    }
    
    // 4.case中还可以使用where关键字来做额外的判断条件
    let point = CGPoint(x: 10, y: 10)
    switch point {
    case let p where p.x == 0 && p.y == 0:
        print("原点")
    case let p where p.x == 0:
        print("Y轴")
    case let p where p.y == 0:
        print("X轴")
    case let p where abs(p.x) == abs(p.y):
        print("对角线")
    default:
        print("其他")
    }
    

    for循环

    • Swift3.0 去除传统形式for循环语句
    // for-in循环
    // 变量i在[0,3)循环
    for i in 0..<3 {
        print(i)
    } //0,1,2
    
    // 变量i在[0,3]循环
    for i in 0...3 {
        print(i)
    } //0,1,2,3
    
    // 倒序遍历
    for i in (0...3).reversed() {
        print(i)
    } //3,2,1,0
    
    // for-each循环
    (1...3).forEach {
        print($0)
    } //1,2,3
    

    while循环

    var i = 0
    while i<100 {
        i+=1
    }
     
    var i = 0
    repeat{
        i+=1
    }while i<100
    

    类扩展

    Swift语言的类扩展是一个强大的工具,我们可以通过类扩展完成如下事情:

    1. 给已有的类添加计算属性和计算静态属性
    2. 定义新的实例方法和类方法
    3. 提供新的构造器
    4. 定义下标脚本
    5. 是一个已有的类型符合某个协议
    注意:扩展只能添加新的计算型属性,不能添加存储型属性,也不能添加新的属性监视器
    

    相关文章

      网友评论

          本文标题:Swift3.0 基础语法

          本文链接:https://www.haomeiwen.com/subject/hvkwpttx.html