1 actor {
2     var sum = 0
3     loop {
4         receive {
5             case Date(bytes) => sum += hash(bytes)
6             case GetSum(reguester) => reguester ! sum
7        }
8     }
9 }

上面的例子,是一个actor的例子

 

例子解释:

actor中首先,定义了一个本地变量sum,然后就等待在消息循环中,不断的用receive段来接收消息。

当收到Date消息,就将bytes取哈希,加到sum上,

当收到GetSum消息,就将sum发回给requester,requester是另外一个actoer。

 

从例子中,可以看出actor,loop,receive,!,就好像是语言本身内置的控制结构,但其实只是定义在actor库中的方法。

从这里就可以看出,scala可以很容易的扩展新的控制结构,使之可以像内置的控制结构一样,用起来方便,感觉像是scala本身所具有的特性一样。