import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
demo1(x: nil, y: nil)
demo2(x: 10, y: 10)
demo4()
/*
打印如下
0
老王你好
老王
20
*/
}
func demo1(x:Int?,y:Int?) {
// 如果有数值 打印数值 如果没有 用?? 后面替代
print((x ?? 0)+(y ?? 0))
let name :String? = "老王"
print((name ?? "") + "你好")
// ?? 优先级低 如果name 为nil 就用??后面替代 , 否则用 ??前面的数值
print(name ?? ""+"你好")
}
func demo2(x:Int?,y:Int?) {
if x != nil && y != nil {
//强制解包有风险
print(x!+y!)
}else
{
print("x或者y为nil")
}
}
/// mark----------- 取名 if-let
// if let 连用 判断对象的数值是否为nil {}内一定有值,可以直接使用,不需要解包
// if var 连用 可以对值修改
func demo4() {
let oName:String? = "老王"
let oAge : Int?=10 //=nil
// 判断不为nil
if oName != nil && oAge != nil {
print(oName! + String(oAge!))
}
//if let 连用
if var name = oName,
let age = oAge
{
// 进入分支之后一定有数值 不需要解包了 就是不为nil 的情况
name = "老李"
print(name+String(age))
}else
{
print("name 或者 age 为nil ")
}
}
/// mark----------- 取名 guard-let
func demo5() {
let oName:String? = "老王"
let oAge : Int?=10
// guard 守护一定有数值,如果没有则return 返回
guard let name = oName,
let age = oAge else {
print("姓名或者年龄为nil")
return
}
// 以下为满足条件的 不为nil的情况
// 有数值之后执行具体的的逻辑实现
print(name+String(age))
}
/// mark----------- 同名 if-let
func demo6(name:String? , age : Int?) {
if let name = name,
let age = age
{
// 非空 name 和nil 在这里有效 不需要解包
print(name+String(age))
}else
{
print("name 或者 age 为nil ")
}
}
/// mark----------- 同名 guard-let
func demo7(name:String? , age : Int?) {
// let name:String? = "老王"
// let age : Int?=10
// guard 守护一定有数值,如果没有则return 返回
// 使用同名变量接收数值 不需要解包
guard let name = name,
let age = age else {
print("姓名或者年龄为nil")
return
}
// 非空 name 和age 在这里有效 不需要解包
print(name+String(age))
}
}
guard let 和 if let
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 如果你已经对Swift精通,请略过此文,不惜勿喷,谢谢!Swift在我心目中的地位: Swift是一门将要替代OC...
- 在上一篇文章Swift中一些常见的关键字一(inout,defer,throw等)简单的介绍了几个关键字。本文续写...
- 对于一些可选值,一般最好经过判断之后确定其不为nil的情况下,再去用!强制解包,这是可以通过if来进行判断。但是过...
- '??' 操作符号 运算登记低 相当于简单的三目运算 **??的使用 (a ?? b) 如果a有值那就用a的...