2017-01-13 1 views
0

PartialFunctionが特性である場合、このコードはどのように機能しますか?私たちはその特性の対象を作り出していますか?私たちはどのように形質のためのオブジェクトを作りますか?

def x=new PartialFunction[Any, Unit] { 
    def isDefinedAt(x: Any) = x match { 
     case "hello" => true 
     case "world" => true 
     case _=> false 
    } 
    def apply(x: Any) = x match { 
     case "hello" => println("Message received hello") 
     case "world"=> println("Message received world") 
    } 
    } 

    x("hello") 
    if (x.isDefinedAt("bye")){ x("bye")} 
    x("bye") 
+1

Javaのインターフェイスの匿名実装を作成するのと同じように、特性の_anonymous実装_を作成しています。 –

答えて

0

匿名インスタンスの作成について読んでください。例えば

Runnableを拡張するクラスFooを作成し、Foo

class Foo extends Runnable { 
def run: Unit = println("foo") 
} 

val a: Runnable = new Foo() 
  • のインスタンスを作成したRunnable

    1. のオブジェクトを作成するには、2つの方法があります

      trait Runnable { 
          def run: Unit 
      } 
      

      考えます

      匿名iを作成するRunnableのインスタンス(中間クラスを作成する必要はありません(Fooなど))。この非常に便利

      val a: Runnable = new Runnable { 
          override def run: Unit = println("foo") 
      } //no need to create an intermediate class. 
      

    そのPartialFunction形質と同じケース。

    あなたは形質の匿名の実装を作成している@Tzachゾハルのコメント

    含む - ただ、Javaのインタフェースの匿名の実装を作成するように。 - Tzach Zohar

  • 関連する問題