forked from callistaenterprise/akka-cadec-2013
-
Notifications
You must be signed in to change notification settings - Fork 0
Scala och Akka 101
aorwall edited this page Jan 14, 2013
·
23 revisions
Scala API
Akka documentation
Akka API
val a:Int = 1
val b = 2
var c: Int = 4
var d = 5
d += 1 // d = 6
class Simple(name: String) {
def hello: String = {
"Hello " + name
}
}
// skapa nytt objekt
val obj = new Simple("name")
object Simple {
def hello(name: String) = "Hello " + name
}
// peka på object
val obj = Simple
obj.hello("name")
case class Colour(s: String)
// skapa nytt objekt
val obj = Colour("blue")
case object Blue
// peka på object
val obj = Blue
def someFunction(v: Any) = v match {
case i: Int => … // matchar på integers och lägger värdet i 'i'
case s: String => … // matchar på strings och lägger värdet i 's'
case Colour(c: String) => … // matchar på case classen Colour och lägger in dess värde i 'c'
case Colour(c: String) if(c == "blue") => … // matchar bara om värdet i Colour är lika med "blue"
case Blue => // matchar objektet Blue
case x => // matchar alla objekt och lägger värdet i 'x'
case _ => // matchar alla objekt och ignorerar värdet
}
// skapa (mutable) map
val map = Map[Int, String]()
// lägg till
map += 1 -> "value"
// ta bort
map -= 1
// iterera igenom en map och kör en funktion med varje nyckel och värde
map.foreach { case (key, value) => funktion(key, value) }
// skapa immutable list
var list = List[String]()
// lägg till
list += "value"
// iterera igenom och kör en funktion med varje element
list.foreach { x -> funktion(x) }
// skapa
val set = Set[String]()
// lägg till
set += "value"
// kontrollera om ett set innehåller ett värde
set.contains("value")
import akka.actor._
val system = ActorSystem("system")
import akka.actor._
class MyActor extends Actor {
def receive = {
case msg: Int => println(10 + msg)
case msg: String => println("Hello " + msg)
case Colour(n) => println(n)
}
}
val actor = system.actorOf(Props(new MyActor), "myActorName")
val actor = system.actorOf(Props(new MyActor(p1,p2)), "myActorName")
val childActor = context.actorOf(Props(new MyActor), "childActorName")
actor ! message
Ett vidarebefordrat meddelande refererar till actorn som skickade meddelandet från början
actor.forward(message)
// referens till actorn själv
self
// referens till actorn som skickat meddelandet
sender
// exempel på att skicka tillbaks ett meddelande till den anropande actorn
sender ! "msg"
// Skicka objektet 'Message' till actor-referensen 'actor' var femte sekund
import akka.util.duration._
context.system.scheduler.schedule(5 seconds, 1 second, actor, Message)
// starta om barn-actors vid RuntimeException
override val supervisorStrategy = OneForOneStrategy() {
case RuntimeException => Restart
}