swift -- 基础

swift -- 基础 

1.常量和变量

常量: let

变量: var 

2.声明常量和变量

常量的声明: let

let  a = 1         //末尾可以不加分号,等号两边的空格必须对应(同时有/没有)

变量的声明: var 

var b = 2

b = 3    //更改值

3.类型的标注

var c : Int = 4

var d : Double = 3.1415926

var f  : Character = "a"  //单个字符 也用双引号 ""

var g : String = "asdf"     //不同于OC ,不在需要@ 

4.命名

//同OC:不能以数字开头,不能使用特殊符号,不能使用关键字

let abc = 2

let 🐱 = 3     

let 中国 = 4   //可以使用中文

 5.输出

print(abc,中国)   //直接输出变量/常量名,不需要@ 和双引号""

拼接格式: "反斜线+ 括号"  \( )

print ("中国是:\(中国)")   

6.注释方式

同OC

7.分号

//swift中,当一行上只有一条代码时:分号;可以写,也可以不写

//当一行上有多条代码:分号必须写

var g = 5; var h = 6

 

//8.整数及 浮点数

//整数

let i : Int = 10

//浮点数

let j : Float = 6.77

let k : Double = 9.88

//9.类型安全及类型判断

//swift中自动判断数据类型,不会将一个错误的类型传给我们使用

var i = 7                         //默认是int

var pi = 3.144444444444 //默认是double

var q = "u"                      //默认是string

//let ss = i * 3.14  会报错,连个不同类型的操作,不可以

//10.数据类型转换(整数与浮点数的转换/字符串与整数的转换)

//整数与浮点

//将类型写在前面,将想要转换的变量用小括号括起来

var w = Double(i)

var ff = Double(i) * 3.14   //只有相同的类型,才能一起操作

 var piInt = Int(pi)

//字符串与整数的转换:要求做到有意义的转换

//let str1 = Int("asdfasdf")  //无意义

let str1 = Int("123456")

11.类型别名

typelias char = Character   //新名为char

var ch1 : char = "a"

12.布尔类型  BOOL (true false)

var bool : BOOL = true

13.元祖(不同于数组,元祖类型可以不同,元素个数最好不要大于7 )

声明元祖

方式一:

let yuanzu = (404,"NotFound")

方式二: 

let (a,b) = (123,"abc")

14.可选类型  ?

//在声明可选类型时,将问号? 放到类型的后面,则将变量设置成可选类型. 可选类型的变量默认值为nil(只有可选类型的变量才能为nil)

var optional : Int ?  // ? 代表可选的,可以不赋值

var optional : Int ? = 10    //赋值

15.强制解析

//将一个可选类型的变量,转换成一般类型的变量,才能使用:取值的时候,在变量后面加上感叹号!

print(optional ! )

16.可选绑定

// let  名 = 之前的一个可选类型的变量

if let x = optional{

print(x)

}else{

print("空")

}

17.隐式解析 可选类型

//将一个可选类型的对象,变为一个可以进行自动解析的可选类型,其实就是将 ! 在声明时候放到类型的后面,而不是在取值的时候放到对象的后面

// ? 可以为nil

// ! 必须有值,不能为nil

var int12 : Int! = 12

print(int12) //取值的时候就不需要加 !

 

//18.使用断言进行调试 assert

//断言,只是做辅助调试使用,没有实际意义

//当条件成立,代码继续向下执行,不影响整体工程;条件不成立,运行时会崩溃到这里

var int13 : Int = 13

assert(int13 < 100) //该条件成立,则会继续向下执行

print("adfasdf")

 

19.运算符

1.赋值运算符

2.算术运算符

//取余运算可有对小数取余

let yushu = 5.5%2.5

 

3.组合赋值运算符 += -=

4.比较运算符  < > >= <=

5.三目运算符  条件?答案一:答案二

6.空合运算符  可选对象一??可选对象二

当可选对象一 为nil时,选择可选对象二使用 ,如果可选对象一有值,使用可选对象一

var kong1 : Int?

var kong2 : Int? = 6

let kong3 = kong1 ?? kong2

print(kong3)

 7.区间运算符  ...三个点

1...5    //代表1,2,3,4,5

8.半开区间运算符  ..<

1..<5   //代表1,2,3,4  不包含5

 

//9.逻辑运算符  &&  ||  !

 

//swift3.0 补充**************************************************8

//1.可选项为空 的判断解决

//每次解析前用 if 或者用 ??(三目运算) 判断,防止崩溃

    func demo(x:Int?,y:Int?)  {

//        let x:Int? = 10;

//        let y:Int? = 200

        //强制解包有风险

        //1.判断

        if x != nil && y != nil {

            print(x! + y!)

        }else{

            

        }

        

        //2.  ??  相当于一个简单的三目

        print((x ?? 0) + (y ?? 0))

 

    }

//使用 ! 强制解析, 有风险,如果为空,则崩溃

//有以下两种方式:(不需要强制解析) 

一. if let/var 连用,判断对象是否为nil,不需要强制解析

 func demo2() {

        let oName:String? = "laowang";

        let oAge:Int? = 11

        if let name = oName,let age = oAge {

            print(name + String(age))

        }

        

        

        

    }

二,guard ler/var  (if let 相反)

//guard 守卫(一定有值,没有值返回)

    func demo3()  {

        let oName:String? = "laowang";

        let oAge:Int? = 11

        

        guard let name = oName, let age = oAge else{

            print("nil")

            return;

        }

        

        //代码若执行到这里,一定有值,前面guard 已经做了判断

        print(name + String(age))

    }

 

posted @ 2016-06-13 09:06  Da雪山  阅读(180)  评论(0编辑  收藏  举报