美文网首页
swift中?和!的区别

swift中?和!的区别

作者: 歌的神 | 来源:发表于2017-03-02 15:36 被阅读104次

swift中?和!用的比较多,所以记录一下进行

使用?的时候,表面的看来可以允许选取的参数赋值为nil,这个时候在使用参数的时候必须加上!或者是加入官方说明的if判断

func testStr(){

var str : String  ?= "hello"

// var result = str + " world" // 编译的时候出现错误,这个地方必须加上!因为str的时候可能是nil,下面的语句是不通的

var result = str! + "world"// 如果使用的是str,要加入!确保编译通过

str = nil

// result = str! + "world"// 运行出错,因为表示参数可能为nil,这个时候,程序是可以进行赋值为nil 的操作的,所以在做操作的时候,需要做判断处理

if let isnull  = str{

println(" str is not null")

}else{

println("str is null")

        }

  }结果: str is null

使用!的时候,表示你定义的时候参数不能为null,总的相当于?反着看,虽然你可以再里面进行一些赋值nil的操作,但是编译的时候是通不过的

func testStr(){

var str : String! = "hello"

var result = str + "world"// 没有任何的问题,因为这个地方定义的就是!,所以已经确定str不为空,改语句的成立

str = nil

result = str + "world"// 编译没事,但是运行的时候出错

result = str! + "world"// 编译没事,但是运行的时候出错

if let isnull = str{

print("str is not null")

}else{

print("str is null")

 }

}

如果不能使用?和!的时候

func testStr(){

var str : String = "hello" // 没有任何问题

// str = nil // 这个地方是不可以进行赋值为nil操作的

// result = str? + "world"// 编译出错

// result = str! + "world" // 编译出错

}

if let isnull = str {// 这个地方就不能这样用了,因为这种方法只是适用于optional type

print("str is null")

}else{

print("str is null")

}

}


相关文章

网友评论

      本文标题:swift中?和!的区别

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