Swift:(五)、字典、控制流

//1、字典:(1)、存储多个相同类型元素的容器(2)、使用键值对存储数据(3)、无序

//1)、空字典

var dic1 = [Int:String]()


var dic2:[String:String] = [:]


//(2)、空字典赋值:

dic2 = ["name":"huangjingzheng","age":"12","gender":""]

var dic3:[Int:String] = [1:"sdfsdf",2:"sdfdsfsdsdf",3:"dfdgdgdgdddee"]

//(3)、使用系统推断类型创建字典:对应键和值的类型一致


var dic4 = [1:23,2:34,3:55]

var dic5 = ["name":"yuanliyin","age":"20","gender":"nv"]

var dic6 = [1:"dfsdfsd",3:"sfsdfdsfds",4:"dfsdfsd"]


var dic7 = Dictionary<Int,String>()

dic7 = [1:"sdfsdf",2:"hdgdrdfddf"]


//4)、访问和修改:

//a、字典具有长度:

print("字典的长度事\(dic7.count)")

//b、字典是否为空:

var isEmpty = dic7.isEmpty

print(isEmpty)

//c、取值:

var a = dic7[1]//并不是第一个,是对应的键值

var dic8 = ["name":"sdfsdf","age":"87689"]

var b = dic8["name"]


//d、修改:

dic8["name"] = "jiadongliang"

print(dic8)


//e、更新数据方法:

dic8.updateValue("23", forKey: "age")

print(dic8)


if let d = dic8["nam"] {

    print(d)

}else{

    print("不存在key")

}


//f、删除

//最简单的删除:

dic8["name"] = nil

print(dic8)


//remove

dic7.removeValue(forKey: 1)

print(dic7)


//(5)、字典的便利

dic8 = ["dfsdf":"adfsdf","bfsfsd":"cdf","efsdf":"sdfsd"]

for (key,value) in dic8{

    print(key)

    print(value)

}

//字典中的key不可重复:

//var dic9 = ["a":"aa","b":"bb","a":"cc"]


//只便利key

for key in dic8 {

    print(key.key)

    print(key.value)

}


for keys in dic8.keys {

    print(keys)

}


for values in dic8.values {

    print(values)

}


//排序:

for values in dic8.values {

    print(values)

}


var newaArr = dic8.keys

newaArr.sorted()

print(newaArr)


var newaArr1 = dic8.values

newaArr1.sorted()

print(newaArr1)


//2、控制流:(if switchwhilefor inrepeatwhile

//1)、forin

for number in 1...10{

    print(number)

}


let aa = 3

let bb = 10

var sum = 1

for _ in 1...bb {

    sum *= aa

}

print(sum)


var array = [12,34,4546,67,45,344,223]

for value in array {

    print(value)

}


for (key,value) in dic8{

    print(key)

    print(value)

}


//2)、while

var condition = 3;

while condition < 10 {

    condition += 1

}

print(condition)


//3reaptwhile   OC(do-while)

var reaptcondition = 1

repeat{

    reaptcondition += 1

}while reaptcondition < 10

print(reaptcondition)


var reaptcondition1 = 10

repeat{

    reaptcondition1 += 1

}while reaptcondition1 < 10

print(reaptcondition1)


var condition1 = 10;

while condition1 < 10 {

    condition1 += 1

}

print(condition1)


//4)、作业if:写一个条件判断


var tam = 20

if tam < 30 {

    print("天气很好")

}else{

    print("有点热")

}


//5)、switch swift case语句结束不需要break,程序自动结束

let string = "a"

switch string {

case "a":

    print("这是a")

case "b":

    print("这是b")

case "c":

    print("这是c")

case "d":

    print("这是d")

default:

    print("没有这个字符")

}



//let string1 = "a"

//switch string1 {

//case "a":

//    //case后面的语句不可以省略

//case "b":

//    print("这是b")

//case "c":

//    print("这是c")

//case "d":

//    print("这是d")

//default:

//    print("没有这个字符")

//}


//可以并列使用逗号分隔cese条件

let string2 = "a"

switch string2 {

case "a","e","f","g":

    print("这是a 或者e 或者f 或者g")

case "b":

    print("这是b")

case "c":

    print("这是c")

case "d":

    print("这是d")

default:

    print("没有这个字符")

}


//可以使用区间:

let intNumber = 4

switch intNumber {

case 0:

    print("这是a 或者e 或者f 或者g")

case 1...5:

    print("这是在1-5之间的数")

case 6...10:

    print("这是c")

case 11...20:

    print("这是d")

default:

    print("没有这个字符")

}


//放置元祖:使用_表示通配类型

let point = (1,2...5)


switch point {

case (0,0...2):

    print("这是a 或者e 或者f 或者g")

case (1,2...5):

    print("这是在1-5之间的数")

case (1,_):

    print("这是c")

case (1,3...4):

    print("这是d")

default:

    print("没有这个字符")

}


let point1 = (1,2)


switch point1 {

case (0,1):

    print("这是a 或者e 或者f 或者g")

case (1,4):

    print("这是在1-5之间的数")

case (1,_):

    print("这是c")

case (1,3):

    print("这是d")

default:

    print("没有这个字符")

}


//使用常量或者变量做通配类型:case 后面可以省略break

let point2 = (2,1)

switch point2 {

case (let x,1):

    print("这是a 或者e 或者f 或者g")

    

case (2,let y):

    print("这是在1-5之间的数")

case (1,_):

    print("这是c")

case (1,3):

    print("这是d")

default:

    print("没有这个字符")

}


//可以使用where做条件追加:

let point3 = (2,1)

switch point3 {

case let(x,y) where x == y:

    print("xy相等")

case let(x,y) where x > y:

    print("x大于y")

default:

    print("不满足条件")

}


//可以使用where做条件追加:

let string5 = "a"

switch string5 {

case "a","b",

     "c","d"

,"e",

     "f","g",

     "h","m","n":

    print("字母是:abcdefgmn")

case "w","x","y","z":

    print("字母是:wxyz")

default:

    print("不满足条件")

}


//作业:使用switchcase完成元祖的区间判断,追加条件,至少带有三个条件选择


//6、控制转移语句:continue break fallthrough return throw

//1)、continue 跳过本次程序执行,执行下次循环

let strContinue = "a big apple"

var newContinuestr = ""

for character in strContinue.characters {

    switch character{

    case "a","e","i","o","u"," ":

        continue

    default:

        newContinuestr.append(character)

    }

}

print(newContinuestr)

//2)、break 跳出程序,执行下条语句

let sanStr = ""

var newSanStr = ""


switch sanStr {

case "1","a":

    newSanStr = "1"

case "4","b","":

    newSanStr = "2"

case "5","c"," ":

    newSanStr = "3"

default:

    break

}

//跳出switch 进入下条语句:

print(newSanStr)


//fallthrogh: 贯穿:


let integerNumber = 3

var desStr = "这个数是"

switch integerNumber {

case 1,2,3,4,5:

    desStr += "3,并且"

    fallthrough

default:

    desStr += "Int型的数据"

}

print(desStr)


//(4)return:函数中使用的比较多,举例见函数


//6、检测API的可用性:在#available后使用,可用的平台使用逗号分割,做多个系统版本检测

if #available(iOS 10,macOS 10.12, *){

    print("ios 10macOS 10.12可用的API")

}else{

    print("使用以前版本的API")

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值