import scala.actors._
import scala.actors.Actor._
case class Point(val x: Double, val y: Double) {
//override def toString() = "Point(" + x + "," + y + ")" //using case keywords ,we no longer need to imp toString
// def drawCurry(str:String)= println(str);
// def drawCurry(str:String)(str2:String) ={drawCurry(str); println(" "+str2); }
}
abstract class Shape() {
def draw(): Unit
}
case class Dot(val on:Point) extends Shape
{
def draw()=println("dot draw: "+this)
}
// must be override "val" and not "var" , var parameter can not been overrided
class MyDot(override val on:Point) extends Dot(on)
{
}
log(new MyDot(Point(2,3)).toString)
case class Circle(val center: Point, val radius: Double)
extends Shape {
def draw() = println("Circle.draw: " + this)
// override def toString() =
// "Circle(" + center + "," + radius + ")"
}
case class Rectangle(val lowerLeft: Point, val height: Double, val width: Double)
extends Shape {
def draw() = println("Rectangle.draw: " + this)
// override def toString() =
// "Rectangle(" + lowerLeft + "," + height + "," + width + ")"
}
case class Triangle(val point1: Point, val point2: Point, val point3: Point)
extends Shape {
def draw() = println("Triangle.draw: " + this)
// case create this method
// override def toString() =
// "Triangle(" + point1 + "," + point2 + "," + point3 + ")"
}
object ShapeDrawingActor extends Actor {
def act() {
loop {
receive {
case s: Shape => s.draw()
case "exit" => println("exiting..."); exit
case str:String => println(str.toUpperCase())
case x: Any => println("Error: Unknown message! " + x)
}
}
}
}
ShapeDrawingActor.start()
ShapeDrawingActor ! "Hello"
ShapeDrawingActor ! new Circle(new Point(0.0,0.0), 1.0)
ShapeDrawingActor ! new Rectangle(new Point(0.0,0.0), 2, 5)
ShapeDrawingActor ! new Triangle(new Point(0.0,0.0),
new Point(1.0,0.0),
new Point(0.0,1.0))
ShapeDrawingActor ! 3.14159
ShapeDrawingActor ! "exit"
分享到:
相关推荐
总的来说,这个简单的Scala Akka Actor demo提供了一个学习Akka和Scala并发编程的实践平台,可以帮助开发者更好地理解和应用Akka框架。通过这个示例,可以深入理解Actor模型的优势,以及如何在实际项目中利用它来...
"Scala进阶之路-part04-Akka Actor.pdf"专注于Akka框架,这是Scala中用于构建分布式、容错系统的工具。Actor模型是Akka的核心,它提供了并发和并行处理的能力。在这里,你会学习到如何创建和管理Actor,理解Actor...
scala-actors-2.10 jar包,可以解决 scala-actors-2.10以上版本带来的不兼容问题
3. **模式匹配**:Scala的模式匹配允许你根据值的不同形式执行不同的操作,这是其强大之处,尤其在处理数据解析和case类时。 **进阶篇** 4. **函数式编程**:Scala深受函数式编程的影响,如高阶函数、闭包、柯里化...
在"响应式架构 消息模式Actor实现与Scala.Akka应用集成"这个主题中,我们可以深入学习如何使用Scala和Akka构建响应式的系统。这可能包括以下知识点: 1. Actor系统的创建和配置:理解如何在Scala中初始化一个Akka ...
这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 首先,Scala运行在Java虚拟机(JVM)上,这意味着它可以无缝地与Java库...
在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为MHT(单一文件网页),这种格式通常用于保存完整的网页内容,包括文本、图像和样式表。 首先,我们来了解一下Scala的基础知识。Scala这...
标题“Akka Scala 学习高清原版pdf”表明该文档是一个专注于Scala语言在Akka框架中应用的指南,而“描述”则指出文档内容涵盖Scala实现的Akka并发编程。标签“Akka scala 并发 actor”则进一步具体化了文档内容,即...
Scala是一种强大的多范式编程语言,它融合了面向对象...总之,Scala以其强大的功能和灵活性在大数据和并发领域占据了一席之地,学习Scala不仅可以提升你在Spark开发中的效率,还能让你更好地理解和应用函数式编程思想。
Scala编程详解:Actor入门 Scala中的Actor模型是其并发编程的核心机制,它是基于消息传递的并发模型,旨在解决多线程编程中常见的竞态条件、死锁等问题。Actor系统允许程序在安全的环境中并行运行,通过异步消息...
Akka框架是Scala生态系统中的重要组件,提供了一套基于actor模型的并发解决方案。 8. Scala与Java的互操作性:Scala可以直接调用Java的库,反之亦然。这对于既有Java基础又想尝试新语言的开发者来说,是一个极大的...
### 关于《Scala中的Actor模型...总之,《Scala中的Actor模型》是学习Scala Actor框架的最佳起点之一,它不仅提供了理论基础,更重要的是教会了读者如何将这些理论应用于实际开发中,从而构建出强大而可靠的并发系统。
通过阅读这本书,开发者不仅可以学习到如何使用Scala和Akka构建响应式系统,还能理解如何利用消息模式和Actor模型来解决并发问题,提升系统的弹性和可靠性。对于想要深入理解并发编程和分布式系统的人来说,这是一本...
面向对象编程是Scala的核心特性之一,Scala的面向对象模型中,所有值都是对象,包括数字和函数。在Scala中,类可以继承自其他类并混入特质(trait)。特质与Java的接口类似,但更加强大,可以包含实现的代码。此外,...
5. **预印版书籍的价值与反馈**:本书的预印版提供了尚未完全完成的作品,但它已经包含了丰富的信息和深入的知识点,对于那些希望提前了解和掌握Scala Actor模型的读者来说,是一个宝贵的学习资源。同时,读者的反馈...
在Scala中,创建和使用Actor非常直观,可以利用ActorSystem来启动和管理Actor,通过定义消息类型和Actor的行为来实现业务逻辑。 在响应式架构中,Actor模型扮演着关键角色,因为它们能够有效地处理异步事件,这正是...
10. **Actor模型**:Akka库是Scala中的并发和分布式计算框架,基于Actor模型,使得编写高性能、容错的应用程序变得简单。 11. **Dotty/Scala 3**:虽然Scala-2.12.3是当前版本,但Scala社区正在开发下一代Scala,即...
在这里,你会学习到Scala的安装与环境配置,理解Scala的基本语法,包括变量声明、数据类型(如基本类型、引用类型和集合类型)、控制结构(如条件语句和循环)以及函数定义和调用。此外,还会介绍Scala中的模式匹配...