私はScala初心者です。私は次の例と混乱しています。Scala newbie、アクカの俳優パターンマッチングの例を理解
class AClass extends Actor{
def receive = {
case B => println("Let's do B")
case C => println("Let's do C")
}
}
trait Request
case object B extends Request
case object C extends Request
object Customer{
def main(args: Array[String]) : Unit = {
val system = ActorSystem("Iwanttoeat")
val cook: ActorRef = system.actorOf(Props[CookSomething])
cook ! B
cook ! C
}
}
私には3つの質問があります。
'receive'メソッドに入力パラメータがありません。私は何から何かにマッチしますか?私はそれが 'コックから来たと思う! B '。 !送って忘れることを意味します。 メソッドで明示的に入力パラメータが指定されていないので混乱しますが、BまたはCとの比較は何ですか?
私はパターン一致の例を見ました。彼らは '一致'キーワードを持っています。 中括弧の前に「一致」は省略されていますか?
3. [重要ではない]なぜ「受信」に括弧がないのですか?なぜ私はあなたの教えが必要なのですか?
乾杯
ソン
Receiveは部分関数です( 'PartialFunction [Any、Unit]'が正確です)。 '{}' case文を含む中括弧は、scala内のものを定義する単なる構文糖です。 [the partial function doc](http://www.scala-lang.org/api/current/#scala.PartialFunction)を参照するか、またはこれに検索エンジンをフィードします。 – alextsc
ありがとう、あなたのコメントのためのアレックス。私は考えていた。私はPartialFunctionがしばしばパターンマッチングに関連していることをオンラインで見ることができます。 – cosmir17