美文网首页
Swift基础语法

Swift基础语法

作者: id_confidence | 来源:发表于2017-08-30 18:10 被阅读0次

    let 和 var

    let 标识常量
    var 表示变量

    • swift :自动推导,var/let的类型是由“=” 右边的类型来隐式推导的,而不是由定义的类型还定义
    let a = 10;
    vat b = 10;
    b = 11;  //b可以做修改,而a不可以
    
    • swift 有严格的类型控制,所有不同类型直接不可以直接计算,必须由程序员自己转换
    let a = 20;
    let b = 20.5;
    
    //错误写法
    print(a+b); 
    
    //正确写法
    print(a+int(b)) ;   //输出 40
    或者 print(double(a)+b)   //输出 40.5
    
    //由此看出,不同类型之间无法直接做运算
    

    可选值 Optional

    可选值,顾名思义就是要么有值,要么为空(nil).可选值在参与计算时需要解包。

    • 问号(?) 定义时使用,用来定义可选值

    • 感叹号(!) 对可选值值解包,可选值不能为nil ,该类型由程序员负责,解包时如果为nil,程序就会崩溃。

    • Optional是一个枚举值

      • none 无值
      • some 是某个值
    • 定义方式

    //1.原始定义方式  常量在定义时,必须有初始值
    let x: Optional = 10
    
    //2.简单定义   定义一个可选的  int类型
    let y:int? = 20
    
    • 可选值常见错误
      解包:从可选值中获取非空值,如果可选值为nil ,程序会崩溃
    let x: Optional = 10
    let y:int? = 20
    //错误写法
     print(x+y)  
    
    //正确写法
     print(x!+y!)    //对于可选值计算,需要解包
    

    注意:常量和变量的可选值不同,var 的可选值默认类型为nil,let默认没有可选值。


    if 语法

    • 条件判断不需要 ()
    • 语句必须加 {}
    let x = 10
    if x>5 {
      print(x)
    }
    
    //三目运算
    x > 6 ? print("大于") : print("小了")
    x > 6 ? print("大于") : () //“()”表示空执行
    

    ?? 问号操作符号

    • 强行解包时存在风险,那么我们可以使用 ??规避风险
    • 如果使用 if 判断可选值,将会是代码变得很丑陋
    • ?? 实际上是一个简单的三目运算,当存在值就直接使用,如果为空,则使用 ?? 后面的值
    //if 判空
     let x:int? = nil 
    if x != nil {
      print(x!)   //此时需要解包
    }
    
    //?? 判空
     let y:int? = nil 
    print(y ?? 0)  //此时输出不会报错
    

    if let /var 连用语法

    • if let 连用 判断对象的是否为 nil ,{}内一定有值,可以自己使用,无需解包。
    • if var 连用 判断对象的是否为 nil ,{}内一定有值,可以自己使用,无需解包; 可以修改值。
    let  myName:String? = "小陈"
    let myAge:int? = 20
    if var name = myName,
       let age = myAge {
       name = "小王"  //var 可以修改值,let 不可以
    print(name+String(age))  //输出结果是 “小王20”
    }
    
    

    guard let

    • guard 中文翻译,守卫、守护
    • guard let守卫 一定有值,如果为空就直接返回,和 if let相反
    • 规避解包,减少分支层次
    let  myName:String? = "小陈"
    let myAge:int? = 20
    guard  let  name = myName,
                age = myAge else {
                print("name or  age is nil") 
                return
    }
    //此时使用不必担心为空
     print(name+String(age))  //输出结果是 “小王20”
    

    for 循环语句

    在swift中,把之前OC里面的 for(int i=0;i<10;i++)这种写法抛弃,i++/++i也被取消,替代的写法是i += 1,从语法来看,swift对语法要求异常严格,下面我们看看swift中的写法。

    格式:for i in 0..<10{ }或者for i in 0...10{ },其中0..<10是一个整体,表示一个半闭半开区间[0,10),0...10表示闭区间[0,10]

    //循环打印 10--0,反序遍历  reversed:颠倒、逆转的意思
    for i in (0...10).reversed(){
      print(i)
    }
    //打印的结果就是 10,9,...2,1,0
    

    字符串 Sting 在swift中是一个结构体,可以遍历

    let str = "hello world"
    //str.characters  字符串的字符数
    for c in str.characters{
      print(i)
    }
    
    let a = str.lengthOfBytes(using: .utf8)   //a = 11 ,求字符串的字节数
    let b = str.characters.count  //b = 11 ,求字符个数,即字符串长度
    

    String

    swift中 使用as做类型转换

      let str = '我是中国人'
      let ocStr = str as NSSting
      //此时我们将swift类型的字符串转化成了OC的,然后可以使用OC的方法
    

    字符串拼接 \(变量或者常量)

    let a = 10
    let b = "song"
    let c:int? = 11
    let d = "\(a)\(b)\(c ?? : 0)"   //拼接a、b、c  ,可选值要做处理
    

    相关文章

      网友评论

          本文标题:Swift基础语法

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