When Blocks

DEX455 - Apex 控制流语句:条件判断、Switch 分支与循环完全指南

📄 第 115 页 🎬 视频课程

课程章节介绍

同学们,这一小节课我们来聊聊 Apex 里 switch 语句中 when 块的匹配值到底是怎么回事儿,搞清楚它有哪些写法,以及需要注意的规则。 首先,每个 when 块后面都需要跟着一个值,用来和 switch 那个表达式的结果进行比较。这个值呢,可以有三种常见的形式。 第一种,直接写一个具体的字面量,比如数字 5,或者字符串 'hello'。这时候就写成 `when 5 { }` 这样。你还可以在一个 when 里用逗号隔开,列出好几个字面量,让这个块能够匹配多种不同的值。比方说 `when 1, 2, 3 { }`,就表示只要表达式的值是 1、2 或者 3,都会进到这个大括号里执行。 第二种形式呢,是用来匹配 sObject 类型的。写法是 `when 后面跟一个 SObjectType 标识符`,比如 `when Account.SObjectType { }`。当你需要根据不同的对象类型执行不同逻辑的时候,这个特别方便。 第三种就是枚举匹配了,直接写 `when 枚举值 { }`。比如你有一个表示状态的枚举,就可以写 `when Status.Approved { }` 来匹配那个已批准的状态。 除了这几种,还有一个很重要的点:null 也是合法的匹配值。也就是说你可以写 `when null { }` 来处理表达式为空的情况,这对所有类型都适用。 接下来两个规则千万要记住:第一,所有 when 里写的值必须是不重复的,每个字面量只能在一个 when 分句里出现一次。比如你没法在两个不同的 when 块里都写上文本 'x',那样编译会报错。第二,switch 语句最多只会执行一个 when 块。只要从上往下找到第一个匹配的块,进去执行完就跳出去了,后面的 when 块就算也匹配,也会被忽略。所以不用担心会执行多次。 这样一来,when 块的三种写法、连同一个空值匹配,还有唯一性和单次匹配这两条规则,就构成了 Apex switch 里匹配值的基础。你只要记住这些,写 switch 的时候心里就有数了。好了,这个概念我们就讲到这里,是不是一下就清楚多啦?

关键词

Apex Salesforce Developer Guide