没有废话,继续
//6.字典
var dict1 = [
"key":"valuel",
"key2":68,
false:"value3"
]
print(dict1)
var dict2: Dictionary<Int, Int> = [23:567,56:78]
var dict3: Dictionary = [12.34:45.65]
var dict4 = [Int:Int]()
var dict5 = Dictionary<String,String>()
//增加 / 修改
dict5["key1"] = "value1"
dict5["key1"] = "value2" // 修改
dict5.updateValue("value3", forKey: "key2")
//删除
//dict5.removeAll()
dict5.removeValueForKey("key1")
//查
print(dict5["key2"])
//如果想要获取字典所有的keys和values。需要通过array进行强转
let allKeys = Array(dict5.keys)
print(allKeys)
let allValues = Array(dict5.values)
print(allValues)
//7.元组 (可理解为可放任意类型的数组)
var result = (404,"Not Found")
result.1 = "Not Found"
var yanhua = (num:1001,name:"yanhua",heifht:165,des:"我是华哥我怕谁")
yanhua.des = "怕海雷"
var (num1,name1,height1,des1) = yanhua
num1 = 1002
print(num1,yanhua.num,height1)
//print中嵌套变量使用 “\(变量名)”
print("num = \(num1) name: \(name1)")
//8.分支语句
var score = 59
if score > 80 {
print("优秀")
}else if score>60{
print("及格")
}else{
print("不及格")
}
//switch要求
//1.必须有分支满足的情况
//2.分支中一定要有操作
//3.不需要break
//4.switch可以进行范围判断
//5.可进行元组判断
switch score{
case 90:
print("")
fallthrough //如果想要贯穿,手动添加fallthrough
case 59:
print("")
default:
print("")
}
switch score{
case 0...60:
print(score)
default:
print("")
}
switch score{
case 0...60:
score += 2
print(score)
case var s where s<80 && s>70: //判断
s+=20
print("")
default:
print("")
}
let point = (13,45)
switch point{
case(13,_):
print("")
default: print("")
}
//9.循环语句
repeat {
print("先执行一次")
} while false
print("aaa")
while score == 1 {
print("aaa")
}
for var i = 0; i <= 10; i++ {
print(i)
}
// 最常用 最常用 最常用
// ... :包括10
// ..< :不包括10
for i in 0...10 {
print(i)
}
//遍历数组
let names = ["shuang","shuang1","shuang2"]
for name in names {
print(name)
}
//遍历字典
let names2 = ["ju":"de","shuang":"shuang"]
for (key, value) in names2 {
print("key:\(key) value:\(value)")
}
for (_, value) in names2 {
print("key: value:\(value)") //可以只遍历value
}
//10.函数
//无参无返回值
func test1(){
}
func test2() ->Void {
}
//无参数有返回值
func test3() ->String {
return "string"
}
//有参数,无返回值
func test4(a: Int, b: Float){
print(a,b)
}
//有参数,有返回值
func test5(name1: String, gender: Character) ->String {
return "name: " + name1 + "gender: " + String(gender)
//swift中字符串可以相加
}
//有参数,多个返回值 !!!!!!!!!!!
func test6(x:Int, y: Int) -> (Int,Int){
return(x+y,x-y)
}
//调用函数
let (he,cha) = test6(10, y: 3)
let res = test6(78, y: 56)
//外部参数名、内部参数名
func test7(a b: String) {
print(b)
}
test7(a: "lala")
func test8(a:Int, _ b:Int){
}
test8(22, 44)
//inout参数
func test9(inout a: Int){
a=100
}
var num = 10
test9(&num)
print(num)
//函数的嵌套声明
func test10(){
func test11(){
func test12(){
}
}
}
//11.枚举
enum Season: Int {
case Spring
case Sumer
case Autumn
case Winter
}
var s1 = Season.Winter
print(s1.rawValue)
//使用原始值创建时要注意
var s2 = Season(rawValue: 2)
print(s2)
print(s2!)
// ?修饰可选类型,开辟空间,可有值,可为空
// !修饰可选类型,但在使用前必须有值
var xyz: Int?
xyz = 10
print(xyz!) //强制解包
//与switch配合
switch s2!{
case .Spring:
print("")
case .Sumer:
print("")
case .Autumn:
print("")
case .Winter:
print("")
}
//12.结构体
struct Person {
//声明属性
var name:String
var age: Int
//声明结构体属性
static var des: String?
//声明方法
func sayHi() {
print("name: \(self.name) age: \(age)") //可以省略self.
}
//声明结构体方法
static func sayHi() {
print("你好。。。\(des)")
}
}
//创建结构体对象
var p1 = Person(name: "dahua", age: 38)
p1.name = "38"
print(p1.name)
p1.sayHi()
Person.sayHi()
struct Student {
var name: String
var gender: String?
var age: Int
var hobby: String?
//构造函数 (类似初始化方法)
init(name: String, age: Int) {
self.name = name
self.age = age
}
init(name: String,gender:String,age:Int,hobby:String){
self.name = name
self.gender = gender
self.age = age
self.hobby = hobby
}
}
let stu = Student(name: "dada", age: 20)