Swift以空格为结束 不用打分号
print为输出函数
let修饰常量 是不可以更改的
var修饰变量 可以更改
//定义一个常量
// 第一个定义常量的方式
// 定义之后,后面的值只能是字符串,因为提前指定了常量的类型
let name : String = "哈哈哈"
// 第二个定义常量的方式
// 使用的是一个特性 隐式类型推断,由初始值来推断常量的类型
let gender = "男"
// 使用let定义的常量的值永远不可以更改
// 第一个定义变量的方式
var age = 100
// 第二个定义变量的方式
// Swift 在定义一个变量或者常量的时候,必须要有确定的类型
var height : Int = 140;
let a : Int = 10
let b : String = "Hello"
let c : Character = "A"
//swift 里bool值 是个枚举类型,只有false true
let bool : Bool = false;
// 不支持 隐式类型转换
var width = 100
// Swift 中不支持隐式类型转换,不可以将两个不一样类型的变量或常量直接进行四则运算
// 如果想要对两个不一样数据类型的变量或者常量进行运算,需要使用这样的格式:变量(常量) A +-*/ 目标类型(B)
var cc = height + Int(width)
print(cc)
let aa = "皮卡丘"
let bb = "金闪闪"
//运算符重载 当对两个字符串的类型做假发操作的时候 会自动拼接到一起
let dd = aa + bb
print(dd)
上面都注掉
// 创建一个字符串类型的常量
let string = "皮卡丘"
print(string)
//创建一个值为空的字符串
let string1 = ""
print(string1)
//创建一个值为空的字符串
let string2 = String()
print(string2)
var name = "里维斯"
var newName = name + "好贵"
print(newName)
//获取字符串长度
print(newName.characters.count)
// 变量交换
var a : String = "输出a"
var b : String = "输出b"
var c : String = String()
c = a
a = b
b = c
print("打印a输出 : (a)")
print("打印b输出 : (b)")
上面都注掉
数组
// 定义一个String 类型的数组
var array = ["张三","李四","王五",2]
print(array)
//如果数组里面保存的数据都不是一类型的,那么数组的类型都是NSObject
var arr1 = ["科比","费舍尔","奥尼尔",5]
print(arr1)
//提前指定数组的类型
var arr2 : [Int] = [1,2,4]
print(arr2)
//Swift 可以通过直接访问数组下标 改变数组的值
arr1[3] = "奥多姆"
print(arr1)
// 向数组中添加一个元素
arr1.append(24)
print(arr1)
// 另一种添加方式
arr1 += [2]
print(arr1)
//指定位置添加
arr1.insert("加索尔", atIndex: 1)
print(arr1)
//向数组中插入一个集合类型的数据(这个集合要和数组是同一类型)
arr1.insertContentsOf(array, at: 2)
print(arr1)
//全部删除 (let 不能删除 使用let定义的常量的值永远不可以更改)
//array.removeAll()
//print(array)
//删除第一个
//array.removeFirst()
//print(array)
//删除最后一个
//array.removeLast()
//print(array)
//删除指定一个
//array.removeAtIndex(2)
//print(array)
//删除一个区间 删除 1 和2
let range : Range = Range.init(start: 0, end: 2)
array.removeRange(range)
print(array)
上面都注掉
字典
//定义一个字典 字典无序
let dic = ["a" : 1, "b" : 2]
//如果字典里key的类型不同 那么key的类型就是NSObject
let dic1 = ["a" : 1 , 2 : "b"]
//提前指定key 和 value 的类型 创建一个字典
let dic2 : [Int : String] = [1 : "a" , 2 : "b"]
print(dic2)
//可以直接通过key访问字典中的元素
print(dic2[1])
//通过key 替换
var dic3 = ["科比" : "库里" , 24 : 30]
dic3["科比"] = "詹姆斯"
dic3[24] = 23
print(dic3)
//在字典中如果没有要修改的数据,就变味插入一条数据
dic3["汤普森"] = 11
print(dic3)
//让某一个值为nil 表示要删除这个key
dic3[24] = nil
print(dic3)
上面都注掉
元组
把多个值组合成一个复合值 并且不要求类型
let type : (String , Int) = ("哈哈" , 100)
let type1 : (name : String , age : Int) = type
print(type1.age)
print(type1.name)
//新建字典
var dic = ["学号" : 1 , "姓名" : "王" , "性别" : "男" , "年龄" : 15]
// 存到数组里
var arr = [dic]
//字典 和数组 都存到元组里
var typ = (dic,arr)
print(typ)
上面都注掉
循环 和 分支 结构
//使用repeat关键字来代替了do
var num1 = 0
repeat{
num1 += 1
print(num1)
}while num1 < 10
//可选值
// 在变量的类型后面添加一个? 表示这个变量为可选类型,可以置为nil
var a : String? = nil
var string : String? = "asdf"
//Swift 判断要求写全
if (string != nil) {
print(string)
}
let age = 20
// 在Swift里面每一个case 里面自带一个break
switch age {
case 1 :
print("age = 1")
case 2 :
print("age = 2")
case 3 :
print("age = 3")
case 4 :
print("age = 4")
default :
print("age = 5")
}
// Swift 中的switch 可以根据区间去获取值
switch age {
case 0...10 :
print("小屁孩")
case 11...20 :
print("中屁孩")
case 21...30 :
print("大屁孩")
default :
print("特大屁孩")
}
var aa = 1
switch aa {
case var value where aa < 10 && aa > 0 :
value++
print(value)
default :
print("error")
}
let point = (100,100)
//Swift 中的switch 可以对一个元组做判断
//表示忽略元组中这个位置的元素
switch point {
case (10,10) :
print("第一象限")
case ( , 10) :
print("在y为10的线上")
case (10 , ) :
print("在x为10的线上")
case ( , _) :
print("随意了")
}
上面都注掉
函数
// 无参无返回值
// 无参有返回值
// 无参有多个返回值
// 有参无返回值
// 有参有返回值
// 有参有多个返回值
// inout函数
//有参有返回值
//返回数组
func text3(name : String , age : Int) -> Array
let arr : Array = [name , age]
print(arr)
return arr
}
text3("卡卡", age: 10)
//函数外部参数名,第一个名字表示外部参数名,当外界使用这个函数的时候使用的名字.第二个参数表示内部参数名,当函数里面使用这个参数的时候使用的名字
func text(number myNumber : Int , name myName : String) {
print("我的姓名是(myName), 我的号码是(myNumber)")
}
text(number: 100, name: "张三")
//无参有多个返回值
func text4() ->(String , Int) {
return ("张三",108)
}
let type = text4()
print("(type.0) , (type.1)")
//有参有多个返回值
func text5(name : String , age : Int) -> (String , Int) {
return (name , age)
}
let type2 = text5("皮卡丘", age: 15)
print(type2)
//函数嵌套
//相当于oc中方法 调用 方法
func text6() {
func text1() {
print("我是第一层嵌套函数")
func text2() {
print("我是第二次嵌套函数")
func text3() {
print("我是第三次嵌套函数")
}
text3()
}
text2()
}
text1()
}
text6()
inout 函数
// inout 函数 改变函数外面变量
//Swift 中函数 本身用let 定义的,是不能更改的 如果想要更改可以使用var
func text7(inout name : String) {
name = "李四"
}
var name = "asd"
text7(&name)
print(name)