`
coollzh
  • 浏览: 991 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Scala学习之Actor

阅读更多
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

    总的来说,这个简单的Scala Akka Actor demo提供了一个学习Akka和Scala并发编程的实践平台,可以帮助开发者更好地理解和应用Akka框架。通过这个示例,可以深入理解Actor模型的优势,以及如何在实际项目中利用它来...

    最好的scala学习 课件

    "Scala进阶之路-part04-Akka Actor.pdf"专注于Akka框架,这是Scala中用于构建分布式、容错系统的工具。Actor模型是Akka的核心,它提供了并发和并行处理的能力。在这里,你会学习到如何创建和管理Actor,理解Actor...

    scala-actors-2.10 jar包

    scala-actors-2.10 jar包,可以解决 scala-actors-2.10以上版本带来的不兼容问题

    scala学习资料(带书签)

    3. **模式匹配**:Scala的模式匹配允许你根据值的不同形式执行不同的操作,这是其强大之处,尤其在处理数据解析和case类时。 **进阶篇** 4. **函数式编程**:Scala深受函数式编程的影响,如高阶函数、闭包、柯里化...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成

    在"响应式架构 消息模式Actor实现与Scala.Akka应用集成"这个主题中,我们可以深入学习如何使用Scala和Akka构建响应式的系统。这可能包括以下知识点: 1. Actor系统的创建和配置:理解如何在Scala中初始化一个Akka ...

    scala学习源代码

    这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 首先,Scala运行在Java虚拟机(JVM)上,这意味着它可以无缝地与Java库...

    Scala-学习资料-mht.rar

    在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为MHT(单一文件网页),这种格式通常用于保存完整的网页内容,包括文本、图像和样式表。 首先,我们来了解一下Scala的基础知识。Scala这...

    Akka Scala 学习高清原版pdf

    标题“Akka Scala 学习高清原版pdf”表明该文档是一个专注于Scala语言在Akka框架中应用的指南,而“描述”则指出文档内容涵盖Scala实现的Akka并发编程。标签“Akka scala 并发 actor”则进一步具体化了文档内容,即...

    scala 学习资料

    Scala是一种强大的多范式编程语言,它融合了面向对象...总之,Scala以其强大的功能和灵活性在大数据和并发领域占据了一席之地,学习Scala不仅可以提升你在Spark开发中的效率,还能让你更好地理解和应用函数式编程思想。

    Scala编程详解 第21讲-Scala编程详解:Actor入门 共8页.pptx

    Scala编程详解:Actor入门 Scala中的Actor模型是其并发编程的核心机制,它是基于消息传递的并发模型,旨在解决多线程编程中常见的竞态条件、死锁等问题。Actor系统允许程序在安全的环境中并行运行,通过异步消息...

    scala学习资料

    Akka框架是Scala生态系统中的重要组件,提供了一套基于actor模型的并发解决方案。 8. Scala与Java的互操作性:Scala可以直接调用Java的库,反之亦然。这对于既有Java基础又想尝试新语言的开发者来说,是一个极大的...

    Artima.Actors.in.Scala.Mar.2011

    ### 关于《Scala中的Actor模型...总之,《Scala中的Actor模型》是学习Scala Actor框架的最佳起点之一,它不仅提供了理论基础,更重要的是教会了读者如何将这些理论应用于实际开发中,从而构建出强大而可靠的并发系统。

    响应式架构++消息模式Actor实现与Scala.Akka应用集成+,沃恩·弗农+

    通过阅读这本书,开发者不仅可以学习到如何使用Scala和Akka构建响应式系统,还能理解如何利用消息模式和Actor模型来解决并发问题,提升系统的弹性和可靠性。对于想要深入理解并发编程和分布式系统的人来说,这是一本...

    Scala学习技术教程

    面向对象编程是Scala的核心特性之一,Scala的面向对象模型中,所有值都是对象,包括数字和函数。在Scala中,类可以继承自其他类并混入特质(trait)。特质与Java的接口类似,但更加强大,可以包含实现的代码。此外,...

    Actors in Scala.pdf

    5. **预印版书籍的价值与反馈**:本书的预印版提供了尚未完全完成的作品,但它已经包含了丰富的信息和深入的知识点,对于那些希望提前了解和掌握Scala Actor模型的读者来说,是一个宝贵的学习资源。同时,读者的反馈...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成 ,沃恩·弗农

    在Scala中,创建和使用Actor非常直观,可以利用ActorSystem来启动和管理Actor,通过定义消息类型和Actor的行为来实现业务逻辑。 在响应式架构中,Actor模型扮演着关键角色,因为它们能够有效地处理异步事件,这正是...

    scala sdk scala-2.12.3

    10. **Actor模型**:Akka库是Scala中的并发和分布式计算框架,基于Actor模型,使得编写高性能、容错的应用程序变得简单。 11. **Dotty/Scala 3**:虽然Scala-2.12.3是当前版本,但Scala社区正在开发下一代Scala,即...

    scala讲解笔记 入门及进阶 PDF文档1-5

    在这里,你会学习到Scala的安装与环境配置,理解Scala的基本语法,包括变量声明、数据类型(如基本类型、引用类型和集合类型)、控制结构(如条件语句和循环)以及函数定义和调用。此外,还会介绍Scala中的模式匹配...

Global site tag (gtag.js) - Google Analytics