美文网首页
笔记整理(Swift基本语法一)

笔记整理(Swift基本语法一)

作者: 贵族小猫钓鱼 | 来源:发表于2019-07-11 18:44 被阅读0次

    类型推导

    1. 如果定义一个标识符时有直接进行赋值,那么标识符后面的类型可以省略
    2. 因为Swift 有类型推导,会自动根据后面的赋值来决定前面的标识符的数据类型
    3. 可以通过option+鼠标左键 来查看变量的数据类型
    

    基本运算

    Swift 中在进行基本运算的时候必须保证类型一致,否则会报错
    
    1. 相通类型之间才能进行运算
    2. Swift 中没有隐私转换
    数据类型类型转换
    
    1. Int 类型转换成Double类型,使用:Double标识符
    2. Double 转为Int类型,使用:Int标识符
    
    let a = 4
    let b = 2.34
    let c = Double(a) + b
    let d = a + Int(b)
    

    逻辑分支

    一、分支介绍

    • 分支即if/switch/三元表达式(三木运算符)等判断语句
    • 通过分支语句可以控制程序的执行流程

    二、if分支语句

    • 和OC里if语句有一定的区别
      • if后面的小括号可以省略
      • 在Swift的判断语句中必须有明确的真假
        • 不再有非0即真
        • 必须有明确的Bool值
        • Bool有两个取值:false/true
    1.错误写法
    let a = 3
    if a {
        不再是非零即真
    }
    2. 正确的写法
    if a > 2{
    必须明确指定真假
    }
    

    三、三目运算符

    let a = 20
    let b = 30
    let result = a > b ? a : b
    

    四、guard的使用

    • guard的Swift2.0 新增加的语法
    • 它与if语句非常的相似,它设计的目的是提高程序的刻度去性
    • guard语句必须带有else语句,它的语法如下:
      • 当条件表达式为true时候跳过else语句中的内容,执行语句组的内容
      • 条件表达式为false时候执行else语句中的内容,跳转语句一般return、break、continue、throw
    写法
    guard 条件表达式 else{
     break
    }
    
    如:
    var age = 18
    func online(age : Int)->void{
    
        guard age> 18 else{
        print("未满十八岁禁止上网")
        
        return
        }
        print("符合要求")
    }
    

    五、Switch 用法

    1. switch 后面的()可以省略
    2. case语句结束后,break可以省略
    3. case后面可以判断多个条件,多个条件以,隔开
    4. Switch特殊用法
    //基本用法
     let sex=1  //0: 男 1:女
     switch sex {
      case 0:
            print("男")
      case 1:
            print("女")
      default: break
            print("其他")
      }
     //<!--case后面多个条件-->
     0: 男 1:女
     let sex=1
     switch sex {
        case 0,1:
            print("正常人")
         default: break
            print("非正常人")
      }
      //Switch 特殊用法
        1.  switch 可以判断浮点型
        let a = 3.14
        switch a{
        case 3.14:
        print("正确")
        default:
        print("错误")
        }
        2.  Switch 可以判断字符串
        let str = "男"
        switch str{
        case "男":
            print("是个哥哥")
        case "女":
            print("是个姐姐")
        default:
            print("其他")
        }
        3.  Switch 支持区间判断
        开区间:0..<10 表示0到10 不包含10 
        开区间:0...10 表示0到10 包含10 
        let score = 79
        switch score {
        case 0..<60:
            print("成绩不及格")
        case 60..<70:
            print("成绩及格")
        case 70..<90:
            print("成绩良好")
        case 90..<99:
            print("成绩优秀")
        default:
            print("满分")
        }
    

    循环的介绍

    • 在开发中经常会需要循环
    • 常用的循环for/while/repeat while

    for 循环的写法

    • 常规写法
    for var i = 0; i < 5; i++{
    
    } 
    
    • 区间for循环的写法
    for i in 0...20{
    <!--0到20包含20, 如果不需要获取下标i可以换成"_"-->
    } 
    

    while循环

    let a = 3
    错误的写法:
    
    while (a){
        a 指定条件,不存在非零即真,另外() 可以省略
    }
    正确的写法:
    while a>2 {
    
    }
    

    repeat while 循环

    类似于OC中do while循环
    let a = 3
    repeat {
        a++
        print(a)
    }while a<10
    

    字符串的使用

    • OC和Swift中关于字符串的区别
      • OC中字符串类型为NSString,Swift中为String
      • OC中字符串使用@""包裹 Swift中使用""
    • 使用String的原因
      • String为结构体,性能更好
      • NSString是一个OC对象,性能略差
      • string 支持直接遍历
      • Swift 提供了String 和 NSStinrg之间的无缝对接

    字符串遍历

    let str = "helloWord"
    var arr = Array<Any>()
    for c in str.characters{
      arr.append(c)
    }
    print(arr)
    打印结果:
    ["h", "e", "l", "l", "o", "W", "o", "r", "d"]
    

    字符串拼接

    let str1 = "好好学习"
    let str2 = "天天向上"
    let str = str1 + str2
    
    //<!--字符串和变量拼接-->
    let name = "赵四"
    let age = 34
    let height = 1.66
    print("my name is \(name) age \(age) height \(height)")
    
    //<!--字符串的格式化-->
    let min = 2
    let second = 8
    //<!--第一种方式-->
    let timeStr = String(format: "%02d:%02d", min,second)
    //<!--第二种方式-->
    let mins = 2
    let second = 8
    let timeStr = String(format: "%02d:%02d", arguments: [mins,second])
    print(timeStr)
    输出结果:02:08
    

    字符串截取

    let urlString = "www.baidu.com"
    let header = (urlString as NSString).substring(to: 3)
    let md = (urlString as NSString).substring(with: NSMakeRange(4, 5))
    let footer = (urlString as NSString).substring(from: 10)
    print("头部:\(header)" ,"中间:\(md)","尾部:\(footer)")
    输出结果:头部:www 中间:baidu 尾部:com
    

    数组介绍

    • 数组(Array)是一串有序的由相同元素构成的集合
    • 数组中的集合元素是有顺序的,可以重复出现
    • Swift的数组的类型是Array,是一个泛型集合

    数组初始化

    数组分为可变数组和不可变数组
    1.  使用let修饰的数组为可变数组
    2. 使用Var修饰的数组为可变数组
    

    数组的定义方式

    定义不可变数组
    let Arr = ["小米","三星","苹果","华为"]
    可变数组
    var arrM = [String]()
    //增加
    arrM.append("12")
    //删除
    arrM.remove(at: 1)
    //修改
    arrM[0]= "锤子"
    查看
    for name in arrM{
    print(name)
    }
    合并数组
    for name in Arr{
    arrM.append(name)
    }
    

    字典介绍

    • 字典中的元素由两部分组成,一个是键(key),一个是值(value)
    • 字典中的键是不可以重复的,键和值必须成对出现
    • Swift中字典类型是Dictionary是一个泛型集合

    字典的初始化

    字典分为可变字典和不可变字典
    1.  使用let修饰的数组为可变字典
    2. 使用Var修饰的数组为可变字典
    

    数组的定义方式

    不可变字典
    let dict = ["name":"小王","age":"23","sex":"男",height:165.3]
    可变字典
    增加
    var dictM = [String:Any]()
    dictM["name"]="张三"
    dictM["age"]=15
    dictM["sex"]="男"
    dictM["height"]=174.3
    删除
    dictM.removeValue(forKey: "name")
    修改
    dictM["name"]="李四"
    遍历字典
     for key in dictM.keys{
         print(key)
        }
        
    for vaule in dictM.values {
        print(vaule)
    }
        
        
    for (key,vaule) in dictM{
        print("\(key) :\(vaule)")
    }
    
    

    相关文章

      网友评论

          本文标题:笔记整理(Swift基本语法一)

          本文链接:https://www.haomeiwen.com/subject/tgqjkctx.html