You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.6 KiB
2.6 KiB
if-let
if let 语法允许你将 if 和 let 组合成一种简洁的方式,用于处理与一个模式匹配的值,同时忽略其余的值。
if let pattern = value {
// code block
} else {
// code block
}
使用match
使用if-let
if let 语法使用模式和表达式,用等号隔开。它的工作方式与 match 相同,其中表达式给定给 match,模式是它的第一个臂。在这种情况下,模式是 Some(max),max 绑定到 Some 内部的值。然后我们可以在 if let 块的主体中像在相应的 match 臂中一样使用 max。如果值不匹配模式,则不会运行 if let 块中的代码。
使用 if let 意味着打的字比较少,缩进次数比较少,所需的代码也比较少。但是,你会失去 match 强制执行的详尽检查。选择 match 和 if let 取决于你在特定情况下正在进行的操作,以及是否放弃详尽检查以获得简洁性是否合适。
换句话说,你可以把 if let 看作是 match 的语法糖,当值与一个模式匹配时运行代码忽略所有其他值。if let 语法也可以有一个 else 分句。
if let - else
match 写法
if let -else写法
通用臂
- match 语句中,_ 总可以替代 None
- 使用变量名作为通用臂的好处是,你可以在代码块中使用这个变量,比使用 _ 更加灵活。但是,使用变量名作为通用臂时,要注意,通用臂必须放在所有其他臂的最后,因为它是最后一个匹配的,如果放在前面,则永远不会执行其他臂。
if let … else if let … else
if let pattern_1 = value_1 {
// code block 1
} else if let pattern_2 = value_2 {
// code block 2
} else {
// code block 3
}
如果 pattern_1 与 value_1 匹配成功,则执行代码块 1;如果 pattern_1 匹配失败,但 pattern_2 与 value_2 匹配成功,则执行代码块 2;如果所有条件都不成立,则执行代码块 3。