#初次接触Swift,由于有OC铺垫相对来说比较好入门,有兴趣的可以查阅#
##/************************常量(let)*************************/##
```
NSString
//输出语句
print("Hello, World!😄")
// swift2.0 进行print出来末尾自己带有换行符(\n)
//加上" , terminator:"" "可以取消换行
//使用let定义的一个//////常量\\\\\\,不能重新赋值
//Swift支持隐式类型推断,可以根据初值,自动判断Swift的数据类型
let a = 10
print(a)
print("a") //两者输出不同
let b : String = "ni hao!"
print(b);
let c = 20.1
//Swift不支持隐式类型转换,不能让两个不一样的数据类型做四则运算
//要转换成想要的类型 Swift强转的格式: 数据类型(需要强转的数据)
let d = Double(a) + c
print(d)
print("d = \(d)")
let 迟到的 = "做俯卧撑"
print("迟到的",迟到的)
let 😄 = "笑"
print("😄",😄)
//Swift支持运算符的重载,会根据语境自动判断运算符的含义
let e : String = "EEEE"
let f : String = "FFFF"
let str = e + f
print(str)
```
##/************************变量(var)*************************/##
```
//Swift里使用var定义一个变量
var a = 10
a = 100
print("a = " , a)
//如果需要定义一个初值为nil的变量,格式: var + 变量名 + ":" + 变量名类型? = nil
var b : String? = nil //此处表示nil(不加"= nil"也行)
print(b)
var b1 : String = "" //此处表示null
print(b1)
```
##/************************数组*************************/##
```
//Swift数组里的数据类型必须是一样的
//let array1 : [Int] = [1,2,3,"a"];//表示错误
let array = [1,2,3,"a"] //AnyObject Swift1.0版本, NSobject Swift2.0版本
print("array = \(array)")
//空数组
let array2 : [Int] = []
//指定数组类型
let array3 : [Int] = [1,2,3]
//数组的增 删 改 查
var array4 = [1,2,3,4,5]
//查
print("查一个数",array4[2])
//增
//一个数据
array4 .insert(9, atIndex: 2)
print("增一个数",array4)
//一个数组
array4 .insertContentsOf(array3, at: 2)
print("增一个数组",array4)
//数组的拼接
var array5 = [5,5,5,5,5]
var array6 = array4 + array5
print("数组拼接",array6)
//改
array4[0] = 8
print("改一个数",array4)
//删
//删除数据的同时,保存内存空间
//Swift里面的Bool是一个枚举,只有true和false两种参数
array4 .removeAtIndex(2)
print("删一个数",array4)
let range : Range = Range(start: 1, end: 3)//包括首但不包括尾
array4 .removeRange(range)
print("删一个区间",array4)
array4 .removeAll(keepCapacity: true)
print(array4)
```
##/************************字典*************************/##
```
//创建字典的两种方式, Swift1.0 中没有第一种方法
let Dict = [1:2, 3:4, "a":"b"]
//Swift字典里 所有的key, 所有的value都必须是同一类型的,如下
let Dict1 : [Int : String] = [1:"a", 2:"b"]
var Dic = [1:2, 3:4, 5:6]
//增
Dic[7] = 8
print("增加键值对",Dic)
//改
Dic[1] = 100
print("修改键值对",Dic)//字典的无序性
//查
print("查找数据",Dic[3])
//删
Dic .removeValueForKey(1)
Dic[5] = nil
print("删除数据",Dic)
```
##/************************元组(类似OC结构体)*************************/##
```
//使用() 表示定义一个元组,元组里没有数据类型的概念
let type = ("罗风","DHM")
//访问元组
//法一
print(type.1)
//法二
let type2 : (name : String, nickName : String) = type
print(type2.nickName)
```
##/************************for循环*************************/##
```
//let array = [1,1,1,1,1]
//
//for var i = 0; i < array.count; i++ { //符号间加空格
//
// print("i = \(i)")
//}
```
##/************************while循环*************************/##
```
//var i = 0
//
//while i < 10 {
//
// print("i = =",i)
//
// i++
//}
//
//
////repeat ... while 和 do ... while 一样
////Swift1.0版本的时候叫做do ... while,Swift 2.0时叫repeat ... while
//
//var m = 0
//repeat {
//
//print(m)
// m++
//
//}while m < 10
```
##/************************for ... in 循环*************************/##
```
//let array1 = [1,2,3,4,5]
//
//for var a in array1 {
//
// print(a)
//}
```
##/************************分支结构*************************/##
```
//if .... else...
var timer : String? = nil
if timer != nil {
print("timer存在")
}else {
print("timer不存在")
}
//switch
let value = 10
switch value {
case 0:
print(value + 1)
case 1:
print(value)
default:
print("超了")
}
// "0...10" 表示 0~10的闭区间,包含 0,10.
// "0..<10" 表示 0~10的半闭区间,包含0,不包含10.
switch value {
case 0...10:
print(value)
case 11...20:
print(value)
default:
print("又超了")
}
let point = (10,0)
switch point {
case (10, 10):
print(point)
case (_, 10):
print(point.0)
case (10, _):
print(point.1)
case (_, _):
print(point)
}
let value3 = 0
let value4 = 100
switch value3{
case 0 where value4 < 10:
print(value3)
case 0 where value4 > 10:
print("正确")
default:
print("错误")
}
```
####
```
```
##/************************函数*************************/##
###
//无参无返回值
//无参有返回值
//有参无返回值
//有参有返回值
//inout函数
//嵌套函数
###
```
//无参无返回值函数
//func (关键字) test (函数名) "()"(参数列表) -> Void(返回值类型)
func test () -> Void {
print("我是第一个函数,无参无返回值")
}
test()
//无参有返回值函数func test1() -> String {
return "我是第二个函数,无参有返回值"}
//接受函数的返回值let strr = test1()print(strr)
//返回一个Int类型数组func test2() -> Array{
return [1, 2, 3]}
let arr = test2()
print(test2())print(arr)
//返回一个OC数组func test3() -> NSArray {
return [1, 2, "a", "b"]}
let nsarr = test3()print(nsarr)
//有参无返回值的函数
//参数格式参数名 + ":" + 参数类型
// " -> Void " 可以省略
func test4(name : String, sex : String) -> Void {
print("我叫\(name), 我的性别是\(sex)")}test4("C罗", sex: "男")
//参数是一个数组格式 : 参数名 + ":" + Array<数据类型>
func test5(phoneNumber : Array) {
print("我的手机号是\(phoneNumber)")
}
test5([121212,45654789])
//有参有返回值的函数
func test6(name : String) ->String {
return (name)
}
let a5 = test6("wuyang")
print(a5)
//无参有多个返回值的函数
func test7() -> (String, String) {
return ("C罗", "18")
}
let type = test7()
print(type)
print(type.1)
//多参多返回值函数
func test8(name : String, age : Int) -> (String, Int) {
return (name, age)
}
let aa = test8("quan zheng", age: 18)
print(aa)
//inout函数
//1.参数默认是用let修饰,即常量
//2.在参数面前添加var,就可以在函数内部修改参数的值,但是不能改变是参变量的值
//3.如果参数使用inout来修饰,就成了输入输出函数,在函数内部修改参数,可以影响实参变量的值
func test9(inout number : Int) {
number = 100
}
var bb = 5
test9(&bb)
print(bb)
//函数嵌套
func test11 () {
func test12 () {
func test13 () {
func test14 () {
//.....可以无限定义下去
}
}
}
}
```