summaryrefslogtreecommitdiff
path: root/docs/examples
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2006-10-02 15:31:37 +0000
committerPhilipp Haller <hallerp@gmail.com>2006-10-02 15:31:37 +0000
commit8d3d085f4bc64bfe019e49675e64073e5a73f60a (patch)
tree948bca5d3edef0182762cfd703850405e90b21be /docs/examples
parent6c710d403e147a81eeb739e20aba07ba47c45b70 (diff)
downloadscala-8d3d085f4bc64bfe019e49675e64073e5a73f60a.tar.gz
scala-8d3d085f4bc64bfe019e49675e64073e5a73f60a.tar.bz2
scala-8d3d085f4bc64bfe019e49675e64073e5a73f60a.zip
Clean-ups and new example for usage of input ch...
Clean-ups and new example for usage of input channels.
Diffstat (limited to 'docs/examples')
-rw-r--r--docs/examples/actors/Input.scala19
-rw-r--r--docs/examples/actors/Joins.scala19
2 files changed, 29 insertions, 9 deletions
diff --git a/docs/examples/actors/Input.scala b/docs/examples/actors/Input.scala
new file mode 100644
index 0000000000..05e3c08958
--- /dev/null
+++ b/docs/examples/actors/Input.scala
@@ -0,0 +1,19 @@
+package examples.actors
+
+import scala.actors.Actor._
+import scala.actors.Channel
+
+object Input extends Application {
+
+ var in = new Channel[Pair[int, int]]
+
+ actor(in) {
+ in.receive {
+ case Pair(x, y) => reply(x + y)
+ }
+ }
+
+ actor {
+ scala.Console.println(in !? Pair(40, 2))
+ }
+}
diff --git a/docs/examples/actors/Joins.scala b/docs/examples/actors/Joins.scala
index 7ea2a50e11..637cb5d092 100644
--- a/docs/examples/actors/Joins.scala
+++ b/docs/examples/actors/Joins.scala
@@ -11,29 +11,29 @@ abstract class Producer[T] extends Iterator[T] {
def next: T = {
setCurrent()
val res = current.get
- current = (coordinator !? Next()).asInstanceOf[Option[T]]
+ current = (coordinator !? Next).asInstanceOf[Option[T]]
res
}
private var current: Option[T] = null
- private def setCurrent() = if (current == null) current = (coordinator !? Next()).asInstanceOf[Option[T]]
+ private def setCurrent() = if (current == null) current = (coordinator !? Next).asInstanceOf[Option[T]]
- private case class HasValue(value: T)
- private case class Next
- private case class Done
- private case class Continue
+ private case class HasValue(value: T)
+ private case object Next
+ private case object Done
+ private case object Continue
/** A thread-based coordinator */
private val coordinator = actor {
while (true) {
receive {
- case Next() =>
+ case Next =>
reply {
receive {
case HasValue(v) =>
reply()
Some(v)
- case Done() =>
+ case Done =>
None
}
}
@@ -43,7 +43,8 @@ abstract class Producer[T] extends Iterator[T] {
actor {
produceValues
- coordinator !? Done()
+ coordinator !? Done
+ ()
}
}