Wesukilaye

Your choices please me, for now


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Swift 可选项

发表于 2019-08-05 更新于 2019-08-06 分类于 Swift
本文字数: 2.9k 阅读时长 ≈ 3 分钟
可选项的定义与简单使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
定义 可选项使用?
解包使用!,准备计算
*/
func demo1() {
//定义y,没有初始化
let y:Int?
//给常量设置数值,初始化的工作能做一次
y = 20
//再次修改常量会报错
//y = 30
print(y)
// *** var 的可选值为nil
// *** let 的可选值没有默认值
var x:Int?
x=10
x=100
print(x)


}
func demo(){
//1.原始的可选项定义
//none:没有值,或者some某一类值
let x:Optional = 10
print(x)
//2.简单定义
//'?'用来定义y是一个可选的Int类型,可能没有值,也有可能是个整数
let y:Int? = 20
print(y)
//不同类型之间的值不能直接运算!如果没有值,是nil。nil不是任何数据类型,不能参与计算
//print(x+y)
// '!'强行解包 -从可选值中强行获取对应的非空值
//程序员必须为每一个!负责
//程序中要少用!
print(x!+y!)

}
可选项的判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  func demo4(name:String?,age:Int?)  {
if let name = name,let age = age {
//非空的name age仅在{}有效
print(name + String(age))
}
//guard let和if let的技巧
//使用同名的变量接受值,在后续使用的都是非空值,不需要解包
//可以避免起名字的烦恼
guard let name = name,let age = age else {
print("姓名或年龄为nil")
return }
print(name + String(age))
}
// MARK:-guard 守卫/守护
//guard let和iflet 刚好相反
func demo3() {
let oName:String? = "老王"
let oAge:Int? = 10
//guard let守护一定有值,如果没有直接返回
guard let name = oName,let age = oAge else {
print("姓名或年龄为nil")
return }
//代码运行至此,一定有值
//通常判断是否有值后,会做具体的逻辑实现 通常代码多
//如果使用if let 凭空多了一层分支,guard是降低分支层次的方法
print(name + String(age))

}

// MARK: -if let /var 连用语法,目的就是判断值
func demo2() {
let oName:String? = "老王"
let oAge:Int? = 30
if oName != nil && oAge != nil{
print(oName! + String(oAge!))
}
//if let 连用,判断对象的值是否为nil,{}内一定有值,不需要解包
//if var 连用, {}可以対值进行修改
if var name = oName,
let age = oAge {
name = "老李"
//进入分支后,name和age有值,不需要解包
//name age作用域仅在{}
print(name + String(age))
}

}
// MARK: -??
func demo1(x:Int?,y:Int?) {
/**
??是一个简单的三目
-如果有值,使用值
-如果没有值,使用??后的值替代
*/
print((x ?? 0)+(y ?? 0))

let name:String? = "老王"
print((name ?? "")+"你好")
// ?? 操作符的优先级低,在使用的时候,最好用()包一下
print(name ?? ""+"你好")

}
func demo(x:Int?,y:Int?){
//1.强行解包有风险
// print(x! + y!)

//2.使用if判断
//但是
if x != nil && y != nil {
print(x!+y!)
}else{
print("x或者y为nil")
}

}
  • 本文作者: Mr.Zhao
  • 本文链接: https://wesukilayezcy.github.io/2019/08/05/Swift-可选项/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
Swift if let guard let
Swift 变量与常量
Swift 逻辑分支
-------------本文结束感谢您的阅读-------------
  • 文章目录
  • 站点概览
Wesukilaye

Wesukilaye

熟练使用iOS Objective-c,Swift. 了解Python爬取网络数据,深入研究移动端开发,目前正在学习Flutter
23 日志
4 分类
16 标签
RSS
GitHub E-Mail bilibili
Links
  • Jacksu
  1. 1. 可选项的定义与简单使用
  2. 2. 可选项的判断
© 2019 Wesukilaye | 62k | 57 分钟
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0