boundedbuffer.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 38 行
SCALA
38 行
package examples.actorsimport scala.actors.Actor._object boundedbuffer { class BoundedBuffer[T](N: Int) { private case class Put(x: T) private case object Get private case object Stop private val buffer = actor { val buf = new Array[T](N) var in, out, n = 0 loop { react { case Put(x) if n < N => buf(in) = x; in = (in + 1) % N; n += 1; reply() case Get if n > 0 => val r = buf(out); out = (out + 1) % N; n -= 1; reply(r) case Stop => reply(); exit("stopped") } } } def put(x: T) { buffer !? Put(x) } def get: T = (buffer !? Get).asInstanceOf[T] def stop() { buffer !? Stop } } def main(args: Array[String]) { val buf = new BoundedBuffer[Int](1) buf.put(42) println("" + buf.get) buf.stop() }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?