swift01

//引入的时候没有双引号,也没有尖括号,直接写框架名

import Foundation

//输出函数

//字符串取消前面的@标记

//没有分号,分号是可选写入的

print("Hello, World!")

 

/*

  Swift和OC的不同

1.类型推断,不需要指定变量的类型,swift相比OC最强大的地方在于编译器,Swift编译器是全类型编译器,在编译的时候就知道了所有的对象的类型,这是OC的动态编译所做不到的,这样做有一个好处,就是类型安全

2.Swift当中不能向nil发送消息

3.泛型 允许向Java那样将数据类型参数化.

4.字符串做了一些增强

5.switch语法做了精简,提供了范围限制

*/

 

//1.变量和常量的声明

let myGender = "男"//常量

var carName = "BMW"//变量

carName = "Audio"

//Swift中允许使用任何Unicode字符作为变量和常量的名字,包括哪些不在ACSII编码的字符(不过貌似然并卵)

let 李帅 = "呆萌2b"

let 😳 = "呵呵"

let 🐶 = "狗"

print(🐶)

 

var a = 10

var b = "A"

var c = 100.1

var d = 200.2

var e = c+d

var char = "A"//这样的创建的是字符变量,

//2.类型判断

//swift中定义变量和常量的时候,不需要标识出变量和常量的类型,系统会自动进行匹配补全,但是也可以进行手动指定

let name = "尚永超"//这里就会自动推断为String类型,是由后面的字符串推断出来的

let name1 : String = "西门庆"//这个常量就不会进行类型推断,因为已经显示的指定了常量的类型

//swift中(系统原生的)所有的类型都是首字母大写,剩下的小写

var age :Int = 20

var weight : Float = 130

var money : Double = 100000000

//不论是变量还是常量,要么赋初值,要么指定类型,要么指定为可选类型,要么指定类型并且赋初值,否则报错

 

//3.可选类型

//在Swift当中对象没有赋初值就没有起始值,没有值的量是不能使用的,会报错和警告,这个时候就需要可选类型,可选类型简单来说就可以理解为,允许为空

//将一个变量声明为可选类型?很简单,在最后面加一个?就可以了

//声明一个可选类型的字符串变量

var sex : String?

print(sex)

sex = "女"

print(sex)

print(sex!)//显示拆包,用!可以将可选类型中的数据拆解出来

 

//下面的代码因为不能为空又没有进行初始化,所以会报错

//var sex2 : String

//print(sex2)

 

//4.字符串

//(1).创建空的字符串

var str_empty :String = ""

var str_empty2 :String = String()

//(2).判断字符串是否为空

if str_empty.isEmpty{

    print("字符串是空")

}

//(3).字符串拼接

var str1 = "lanou"

var str2 = "3g"

var str3 = "!!!"

var str4 = str1 + str2 + str3

print(str4)

//(4).字符串中间插入数值

//swift中占位符更改了,使用\()来进行变量和常量的取值

print("蓝鸥:\(str4)\n")

//(5).获取字符串长度

print(str4.characters.count)

//(6).字符串等值判断

if str1 != str2{

    print("两个字符串不相等")

}

 

//5.(隐式类型转换)

//swift里面没有隐式类型转换,只有显示类型转换

//强制类型转换语法: Float()

let aa:Int = 3

let bb:Float = 2.3

var cc = Float(aa)+bb

//6.数组的使用

//swift中的特点:1 存储的所有的数据类型必须是同一类型 2 不必非得是对象类型,基本数据类型也可以存储

//数组的创建方式

var nameArray = ["呵呵","阿斯顿","金坷垃"];//首先推断为数组,数组里面元素的类型为字符串

//这种事直接显示指定数组和其元素类型

var nameArray1:Array<String> = ["小明","老王","星池"];

//创建一个空的数组

var array = Array<String>()//推荐用这种

var array1 = [Int]()//创建一个整型的数组

 

//访问数组

print("数组第一个元素是\(nameArray[0])")

//添加元素

nameArray.append("金条")

nameArray.insert("小祥", atIndex: 0)

print(nameArray)

//删除

nameArray.removeAtIndex(0)

print(nameArray)

//修改

nameArray[0] = "小翔子"

print(nameArray)

 

//7.字典

//定义字典

var score:Dictionary<String,Int> = ["小贱":99,"小杰":82,"小随":56]

//定义空的字典

var dic1:Dictionary<String,Int> = [:]

var dic2 = Dictionary<String,Int>()//推荐

//添加键值对

score["小欧"] = 95

//修改某个键值对

score["小贱"] = 59

print(score)

//删除

score.removeValueForKey("小杰")

print(score)

 

//8.元组

//元组是将任意类型的任意个数的元素组成一个新的数据类型

var status = ("大神32",["18","19","20"],32)

var status1:(className:String,ages:Array,count:Int) = ("大神32",["18","19","20"],32)

//元组数据的访问

//方式1

print(status.0)

//方式2

print(status1.className)

//元组的建议:元组中的元素过多,用标记名称,元组中的元素较少,种类能够分开,直接使用下标

 

//9.分支语句

//在swift当中,bool类型只有true个false 没有YES和NO

let flag = true

if flag == true{

    print("开心")

}else{

    print("不开心")

}

//switch

//1.不需要使用break,不会有贯穿现象

let ageOfCat = 10

//switch ageOfCat{

//case 0:

//    print("小包")

//case 1:

//    print("阿包")

//default:

//    print("包包")

//}

//2.支持区间选项

//switch ageOfCat{

//case 0..<10://半闭区间

//    print("哈宝")

//case 10...100://闭区间

//    print("呢宝")

//default:

//    print("腰包")

//}

//3.支持where子句

//switch ageOfCat{

//case var value where ageOfCat < 10 && ageOfCat > 0:

//    value++

//    print("baobao")

//case var value2 where ageOfCat >= 10 && ageOfCat < 100:

//    print("大宝")

//default:

//    print("hehe")

//}

 

//10.循环

//for循环

//for var i = 0; i < 10 ; i++ {

//    print("我是第\(i)遍")

//}

 let arr = ["🐂","🐴","🐍","🐰","🐲","🐯"]

//遍历数组

for a in arr{

    print(a)

}

//遍历字典

let dict = ["❀":18,"西施":16,"杜十娘":21]

for (key,value) in dict{

    print("\(key)->\(value)")

}

//while

var number = 5;

while number > 0{

    number--

    print(number)

}

 

repeat {

    print("dasd")

    number--

}while number > -6

//11.函数

//无参无返回值的函数

func function1() ->Void{

    print("啦啦啦")

}

//无参有返回值的函数

func function2() ->Int{

    return 10

}

//有参无返回值的函数. 参数列表是先写参数名,再写参数类型

func function3(a:Int,b:Double) ->Void{

    

}

//有参有返回值的函数

func function4(a:Int,b:Double) ->Int{

    return a + Int(b)

}

//函数调用的时候需要显示的标明参数名字,但是,一般第一个参数不写,剩下的参数都要标明参数的名字

function4(5, b: 2.0)

//inout参数

//参数默认的是let类型的,但是swift提供了另外一种方式,可以将参数和传入的值进行关联,就是inout

func change(inout value : Int){

    value = 10

}

var number1 = 20

change(&number1)

print(number1)

 

//12枚举

enum Season : Int{

    case spring = 10

    case summer

    case autumn

    case winter

}

print(Season.summer.rawValue)

 

posted on 2016-04-08 14:42  立刻就爽  阅读(76)  评论(0)    收藏  举报

导航