课程章节介绍
同学们,我们来看一下Apex里“表达式”这个概念。
简单说,表达式就是由变量、运算符和方法调用组合起来的东西,它算到最后一定只得到一个值。就像你们写数学算式,3+5 算出来就是 8,整个 3+5 就是一个表达式。
在Apex里,你写的表达式只能是下面这几种情况之一,我们一条一条来理一下:
第一种,文本表达,也就是字面量。比如直接写个数字 10,字符串 ‘Hello’,或者布尔值 true。
第二种,用 new 关键字来创建新的 sObject、Apex 对象、列表、集合或映射。比如 new Account()、new List(),这也是表达式,它求值就得到一个新建的对象。
第三种,任何“左值”。左值听起来有点绕,其实就是可以放在赋值号左边的东西,比如变量名、一维列表中的某个位置、或者 sObject、Apex 对象的字段引用。像 myVar、list[0]、acc.Name 这些,都是表达式,它们能取出一个值。
第四种,sObject 的字段引用,注意这是上面左值的具体体现。比如你有一个存放联系人的列表,contacts[0].Id 就是引用列表中第一个联系人的 Id 字段。还有和 sObject 关联的子记录,像 acc.Contacts 这种关系字段,也算表达式。
第五种,方括号里的 SOQL 或 SOSL 查询,它们是实时求值的。像 [SELECT Id, Name FROM Account LIMIT 1] 这条查询,本身就是一个表达式,会返回一条记录或一个列表。
最后一种,静态方法或者实例方法的调用。比如 Math.abs(-5) ,或者是 System.debug(),只要方法有返回值,这个调用整体也算表达式,求值得到方法的返回值。
记住,当你写代码时,任何能算出一个值的小结构,别管多复杂,它都必须是上面这些形式中的一种。这样在写条件判断、赋值语句的时候,你就能想清楚这里到底能用什么。
怎么样,这样梳理下来,是不是清晰多了?以后遇到复杂的表达式,就把它拆开看,肯定跑不出这几种情况。
关键词
Apex
Salesforce
Developer Guide