Swift语法(一)

作者: 尕小天 | 来源:发表于2016-08-14 11:22 被阅读158次

    简介

    Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序

    2014 年,在 Apple WWDC 发布

    历史

    2010 年 7 月,苹果开发者工具部门总监 Chris Lattner
    开始着手 Swift 编程语言的设计工作
    用一年时间,完成基本架构

    Swift 大约历经 4 年的开发期,2014 年 6 月发表

    克里斯·拉特纳
    何许人?
    LLVM 项目的主要发起人与作者之一
    Clang 编译器的作者
    苹果公司『开发者工具』部门的主管
    领导Xcode、Instruments等编译器团队
    Swift的大部分基础架构均由他1人完成

    特点

    从它的语法中能看到Objective-C、JavaScript、C#、Python等语言的影子
    语法简单、代码简洁、使用方便
    可与Objective-C混合使用(相互调用)
    提供了类似 Java 的名字空间(namespace)、泛型(generic)、运算对象重载(operator overloading)

    为什么设计Swift语言

    让应用开发更简单、更快、更稳定

    确保最终应用有着更好的质量

    Swift初体验

    Playground是什么?

    从Xcode6开始出现(Swift开始出现)
    翻译为:操场/游乐场
    对于学习Swift基本语法非常方便
    所见即所得(快速查看结果)
    语法特性发生改变时,可以快速查看.

    一.Swift最基本的语法变化

    1.导入框架

     OC: #import <UIKit/UIKit.h>
     Swift: import UIKit
    

    2.定义标识符

     OC: int a = 20;
    
     Swift: let a : Int = 20   ==  let a = 20    
    

    定义标识符格式: let / var 标识符 : 数据类型 = 赋值
    注意:let声明的是常量,不可以对常量重新赋值

    Swift中定义标识符,必须声明该标识符是变量(var)还是常量(let)
    注意:在swift中如果一行代码中只有一条语句,那么语句后面的 ;(分号) 可以省略
    一行内有多条语句 ; 不可以省略, 不建议一行写多条语句

    3.Swift中的打印

     OC:NSLog(@"Hello world”);  / NSLog(@"%d", a);
    
     Swift中字符串不需要@
    print(a)   /   print("hello world")
    

    二.常量&变量

    1.什么是常量和变量?
    在Swift中规定:在定义一个标识符时,必须明确说明该标识符是常量还是变量
    使用let来定义常量,定义之后,不能进行修改
    使用var来定义变量,定义之后,可以进行修改

    2.常量个变量的使用注意
    在使用中,建议先使用常量,这样更安全,防止不小心修改之前的值
    如果需要修改时,再把常量修改为变量
    注意:常量的本质是,指向的内存地址不能修改,但可以找到内存地址对应的对象,修改对象内部的属性

    let view : UIView = UIView()
    view.alpha = 0.5
    view.backgroundColor = UIColor.orangeColor()
    

    三.类型推导

    1.什么是类型推导?
    在Swift中,如果在定义标识符的同时直接对其进行赋值,那么系统会自动根据赋的值的数据类型,推导出标识符的类型
    如果定义标识符的同时直接赋值,那么标识符后面的数据类型可以省略
    可以通过option + 鼠标左键来查看标识符的类型

    let n = 3.14
    let View = UIView()
    

    四.Swift中的基本运算

    1.swift中在进行基本运算时,必须保证两个参与运算的值得数据类型一致,否则会报错
    因为swift中没有隐式转换

    let m = 20
    let n = 3.44
    // let result = m + n 错误写法
    

    2.数据类型的转化
    将Int 转换为 Double Double(m)
    将Double 转换为 Int Int(n)

    let a : Double = 2.44  
    let b : CGFloat = 4.55
    let result1 = a + Double(b)
    

    五.逻辑分支

    1.什么是逻辑分支?

    分支就是if / witch / 三目运算符 等判断语句
    通过分支语句可以控制程序的执行流程

    2.if分支语句

    OC中if的写法 : BOOL --> YES/NO

    int a = 20 
    if (a > 0) {    
      NSLog(@"a大于0") 
    } 
     if (a) {    
        NSLog(@"a不等于0") 
    }  
    

    Swift和OC的差异
    1> if后面的()可以省略掉
    2> swift中没有非0(nil)即真 Bool --> true/false

    let a = 20
    if a > 0 {    
        print("a大于0")
      } else {      
        print("a不大于0")
    }
    

    3.三目运算符

    swift中的三目运算符合OC没什么差别

    let result = m > n ? m : n
    

    4.guard的使用

    4.1 guard是Swift2.0新增的语法

    4.2 它与if语句非常类似,它设计的目的是提高程序的可读性

    4.3 guard语句必须带有else语句,它的语法如下:

    4.3.1当条件表达式为true时候跳过else语句中的内容,执行语句组内容

    4.3.2条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw

    func online(  age : Int , IDCard : Bool , money : Int)  { 
        guard age >= 18 else {        
            print("回家叫家长")        
            return    
        }    
        guard IDCard == true else {        
            print("回家拿身份证")        
            return    
        }    
        guard money >= 5 else {        
            print("回家拿钱")        
            return    
        }    
        print("留下来上网")
    }
    
    online(19, IDCard: true, money: 4)
    

    5.switch分支

    5.1苹果在swift中对swift中对switch进行了很大的加强

    5.2 Swift中switch和OC中switch的差异
    switch中后面的()可以省略
    case结束之后可以不加break,也不会产生case穿透

    补充:如果希望产生case穿透,需要在语句结束之后加上fallthrough
    在swift中switch的case后面可以跟上多个条件, 并且多个条件以 , 分割

    switch sex {
    case 0, 1:    
         print("正常")
    default:   
         print("非正常人")
    }
    

    5.3 swift支持多种数据类型判断
    浮点型switch判断

    switch m {case 3.14:    print("m是π")default:    print("m非π")
    

    }

          字符串switch判断
    switch opration {    
        case "+":        
            result = a + b    
        case "-":        
            result = a - b    
        case "*":        
            result = a * b    
        case "/":        
            result = a / b
        default:    
            print("非法操作")
    }
    

    判断区间类型
    什么是区间?
    通常我们指的是数字区间:010,100200
    swift中的区间常见有两种
    半开半闭区间:0..<10 表示:0~9,不包括10
    闭区间:0...10 表示:0~10

    let score = 92
    
    switch score {
        case 0..<60:    
            print("不及格")
        case 60..<80:    
            print("及格")
        case 80..<90:    
            print("良好")
        case 90...100:    
            print("优秀")
        default:    
            print("不合理分数")
    }

    相关文章

      网友评论

      本文标题:Swift语法(一)

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