salesforce.com开发平台 Apex语言介绍 (一.基础语法介绍)

概要

    Salesforce.com 的Apex语言是在Salesforce.com平台上执行的一种强类型编程语言。Apex被用作添加应用程序的业务逻辑(Business Logic),开发数据库触发器,并且被用在用户界面层对程序进行控制。它很紧密地和数据库以及查询语言结合,并且支持调用Web服务(Web Services),[and includes features such as futures and governors for execution in a multi-tenant environment. ]
   这个文章主要介绍Apex语言。稍后会概要的讲述一下Apex的语法,然后我们看一下他的数据库操作,其次是测试,Web服务以及动态Apex,最后我们看一下开发作为服务(development as a service)以及在Force.com执行的结果。
   在阅读这篇文章后你将会概要的了解Apex语言以及他所运行的平台。
基础语法介绍
   Apex的语法和Java和C#类似。它有通常语言所具有的功能,比如类(classes),接口(interfaces),常量(constants),类变量(class variables),以及标注符号(annotations)。
并且Apex不区分大小写。
1.类和接口(classes and interfaces
下面是一个类和接口实现的简单例子:
------------------------------------------------------------
    public interface PurchaseOrder {
         Double discount();
     }
     public class CustomPurchaseOrder implements PurchaseOrder {
         static final Integer DEFAULT_DISCOUNT = .05;
     }
------------------------------------------------------------
implements 关键字声明接口的实现,static关键字声明一个不需要实例化就可以访问的类变量,
final关键字声明一个常量。
你可以使用new 关键字创建一个类的实例,例如:
------------------------------------------------------------
     PurchaseOrders PO = new CustomerPurchaseOrder();
------------------------------------------------------------
Apex支持标准类似java的标识 this 和 instanceOf。
2.原始数据类型(Primitive Data Types)
Apex支持一些不同的数据类型:
>原始数据类型比如 Integer,Date
>sObject类型代表持久化对象(persistent objects)
>集合和枚举类型(collections and enumerations)
>用户以及系统定义类
原始数据类型包含:
>Blob -用于存储2进制数据
>Boolean
>Date,Time,DateTime
>Decimal -数值或者货币
>ID -Force.com数据库记录标识类型
>Integer,Long,Double,String
下面是使用原始数据类型的例子:
------------------------------------------------------------
     DateTime dt = System.now() +1;
     Boolean mustI = true;
     String s = 'abc'.toUpperCase();
     Decimal d = Decimal.valueOf('123');    
------------------------------------------------------------
注意String类型使用单引号而不是双引号。
3.集合(Collections)
Apex支持集合(Sets),列表(Lists)和图(Maps),以及枚举类型(Enumerations)。这些非常的直接
我们在这里提供一些例子。需要注意的是集合第一个元素的下标(Index)是0。
一个集合(Sets)是不进行排序的原始数据类型元素的集合,不包含任何重复的元素。
------------------------------------------------------------
     Set s = new Set('a','b','c');
     s.add(c');
     System.assert(s.contains('b'));
     System.assert(s.size() == 3);
------------------------------------------------------------
一个列表(Lists)是一个元素的集合。当需要实现一个序列的时候使用,可以包含重复的元素。
------------------------------------------------------------
     List myList = new List();
     myList.add(47);
     myList.get(0);    
------------------------------------------------------------
你也可以使用数组的语法,例如:
------------------------------------------------------------
     String[] colors = new List();
     colors[3] = 'Green';    
------------------------------------------------------------
图(maps)是一个关键字对的集合。它支持一个简短的语法来填充这个集合。
------------------------------------------------------------
     Map myStrings = new Map{'a'=>'b','c'=>'d'.toUpperCase()};
     Map m = new Map([select id, lastname from contact]);
------------------------------------------------------------
最后一行包含了对数据库的访问,利用查询数据库对象contact返回的结果进行填充,只保留了
id 和 lastname 这两个字段。
Apex同样支持枚举类型,下边的代码创建一个Season的数据类型,同时声明一个变量指定一个值。
------------------------------------------------------------
     public enum Season {WINTER,SPRING,SUMMER,AUTUMU}
     Season s = Season.AUTUMN;
------------------------------------------------------------
4.声明和表达式(statements and Expressions)
------------------------------------------------------------
     Integer cout = 1;
     while(count < 11){
         system.debug(count);
         cout++;
     }
     for(Integer i=0,j=0;i<10;i++){
         System.debug(i+1);
     }
     Integer[] myInts = new Integer[]{1,2,3,4,5,6,7,8,9};
     for(Integer i: myInts){
         System.debug(i);
     }
------------------------------------------------------------
最后的for循环展示了如何迭代一个集合。Apex同样支持循环迭代一个通过查询返回的持久性对象(sObject)记录集。
------------------------------------------------------------
     String s = 'Acme';
     for(Account a : [select id, name from account where name like:(s+'%')]){
         //your code
     }
------------------------------------------------------------
注意查询语句是怎么嵌入到方括号里的,并且引用了变量 s。
5.异常(Exceptions)
Apex使用大家熟悉的throw,try,catch和finally去处理异常,例如:
------------------------------------------------------------
     try{
         throw new Exception():
     } catch(ListException e) {
         //List Exception handling code here
     } catch(Exception e) {
         //Generic exception handling code here
     }
------------------------------------------------------------

 

6.杂项(Miscellaneous Syntax)
Apex支持标注符号(annotations)。@future表明方法异步调用,@isTest表明一个类的所有方法为测试
方法。
下面的例子展示了使用@future来实现一个异步Web服务调用:
------------------------------------------------------------
     @future(callout=true)
     public static void doCalloutFromFuture(){
          //Executes when the platform has resources   
     }
------------------------------------------------------------
你不能创建自己的标识符。
最后Apex还支持一个简略的属性定义语法。例如定义一个变量以及get方法和set方法。
------------------------------------------------------------
     public Integer prop{
         get{return prop * 2;}
         set{prop = value;}
     }
------------------------------------------------------------
最简单的属性定义方法:
------------------------------------------------------------
     public Integer anotherProp{get;set;};

你可能感兴趣的:(salesforce.com开发平台 Apex语言介绍 (一.基础语法介绍))