Scala基本语法(二)

xiaoxiao2021-02-28  97

Point 1:Actor

package com.scala.learn import scala.actors._, Actor._ object Actor1 { def main(args: Array[String]) = { val badActor = actor { while (true) { //nexttpule receive { case msg => println(msg); reply("gagagagag"); } } } println("Do ya feel lucky, punk?"); // println(badActor ! "dddddddddddddd"); //! 异步发送消息 //这里的println打印的是返回来的值,也就是reply中的值 println(badActor ! "mmmmmmmmmmmmmmm"); } }

Point 2:

package com.scala.learn import scala.actors._, Actor._ object Actor2 { case class Speak(line: String) case class Gesture(bodyPart: String, action: String) case class NegotiateNewContract() def main(args: Array[String]) = { val badActor = actor { receive { case NegotiateNewContract => println("I won't do it for less than $1 million!") case Speak(line) => println(line) case Gesture(bodyPart, action) => println("(" + action + "s " + bodyPart + ")") case _ => println("Huh? I'll be in my trailer.") } } // badActor ! NegotiateNewContract // badActor ! Speak("Do ya feel lucky, punk?") // badActor ! Gesture("face", "grimaces") // badActor ! Speak("Well, do ya?") badActor ! "Well, do ya?" Thread.sleep(3000); } }

Point 3:

package com.scala.learn import scala.actors._, Actor._ object Actor3 { case class Speak(line : String); case class Gesture(bodyPart : String, action : String); case class NegotiateNewContract(); case class ThatsAWrap(); def main(args : Array[String]) = { val badActor = actor { var done = false while (! done) //相当于true { receive { case NegotiateNewContract => System.out.println("I won't do it for less than $1 million!") case Speak(line) => System.out.println(line) case Gesture(bodyPart, action) => System.out.println("(" + action + "s " + bodyPart + ")") case ThatsAWrap => System.out.println("Great cast party, everybody! See ya!") done = true case _ => System.out.println("Huh? I'll be in my trailer.") } } } badActor ! NegotiateNewContract // badActor ! Speak("Do ya feel lucky, punk?") // badActor ! Gesture("face", "grimaces") // badActor ! Speak("Well, do ya?") // badActor ! ThatsAWrap } }

Point 4:

package com.scala.learn import scala.actors._, Actor._ object Actor4 { case class Speak(line : String); case class Gesture(bodyPart : String, action : String); case class NegotiateNewContract(); case class ThatsAWrap(); def main(args : Array[String]) = { def ct = "Thread " + Thread.currentThread().getName() + ": " val badActor = actor { var done = false while (! done) { receive { case NegotiateNewContract => System.out.println(ct + "I won't do it for less than $1 million!") case Speak(line) => System.out.println(ct + line) case Gesture(bodyPart, action) => System.out.println(ct + "(" + action + "s " + bodyPart + ")") case ThatsAWrap => System.out.println(ct + "Great cast party, everybody! See ya!") done = true case _ => System.out.println(ct + "Huh? I'll be in my trailer.") } } } System.out.println(ct + "Negotiating...") badActor ! NegotiateNewContract System.out.println(ct + "Speaking...") badActor ! Speak("Do ya feel lucky, punk?") System.out.println(ct + "Gesturing...") badActor ! Gesture("face", "grimaces") System.out.println(ct + "Speaking again...") badActor ! Speak("Well, do ya?") System.out.println(ct + "Wrapping up") badActor ! ThatsAWrap } }

Point 5:

package com.scala.learn import scala.actors.Actor /* 给Actor发消息 */ class HelloActor extends Actor{ def act(){ while (true){ receive{ case name:String => println("Hello, " + name) case money:Int => println("How much? " + money) case _ => "other" } } } } object HelloActor{ def main(args: Array[String]) { val helloActor = new HelloActor helloActor.start() helloActor ! 100 } }

Point 6:

package com.scala.learn import scala.actors.Actor /* 给Actor发送case class的消息 */ case class Register(username: String, password:String) case class Login(username: String , password:String) class UserManagerActor extends Actor{ def act{ while (true){ receive{ case Login(username, password) => println("login: " + username + ": " + password) case Register(username, password) => println("register: " + username + ": " + password) } } } } object UserManagerActor{ def main(args: Array[String]) { val userActor = new UserManagerActor userActor.start() userActor ! Register("Aaron", "123") userActor ! Login("Aaron", "123") } }

Point 7:

package com.scala.learn import scala.actors.Actor /* Actor之间相互收发消息 */ case class Message(content:String, sender:Actor) class YasakaActor extends Actor{ def act(){ while (true){ receive{ case Message(content,sender) => {println("Aaron received: " + content); sender ! "Yes"} } } } } class GagaActor(val yasakaActor: YasakaActor) extends Actor{ def act{ yasakaActor ! Message("Hello, Aaron, I'm gaga. Are you free now?", this) var flag = true while (flag){ receive{ case response:String => println("gaga received: "+ response) case response:Int => println("you love xuruyun. you don't love me anymore !"); flag=false } } } } object Message { def main(args: Array[String]) { val yasakaActor = new YasakaActor val gagaActor = new GagaActor(yasakaActor) yasakaActor.start() gagaActor.start() } }

转载请注明原文地址: https://www.6miu.com/read-75077.html

最新回复(0)