Scala语法很难理解

Sun*_*Sun -2 scala akka

我正在学习Scala和Akka,我基本上是Java程序员.我看到各种语法,但很少我无法理解.

case class ProcessStringMsg(string: String)
case class StringProcessedMsg(words: Integer)

class StringCounterActor extends Actor {
  def receive = {
    case ProcessStringMsg(string) => {
      val wordsInLine = string.split(" ").length
      sender ! StringProcessedMsg(wordsInLine)
    }
    case _ => println("Error: message not recognized")
  }
}
Run Code Online (Sandbox Code Playgroud)

在这里,是什么意思sender ! StringProcessedMsg(wordsInLine)

Dim*_*ima 6

有关scala语法的一些内容应该有助于java程序员:

  • scala中的方法名称不必是字母数字.!作为方法的有效名称,如"foo"

  • 实例和被引用的成员之间的点是可选的,括号也是可选的,围绕单个方法参数. foo.bar("baz")相当于foo bar baz

考虑到这一点,注意sender ! StringProcessedMsg(wordsInLine)是一样的sender.!(StringProcessedMsg(wordsInLine)):它调用一个方法!sender,并传递StringProcessedMsg(wordsInLine)给它作为参数.

没什么神奇的:)