Swift语法(一)

简介

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("不合理分数")
}
    原文作者:尕小天
    原文地址: https://www.jianshu.com/p/faab8cce0b19
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞