2016-06-15 17 views
0

に何を適用し、その後、イムこのようなコードを作成します。平均法は、このリンク<a href="http://www.tutorialspoint.com/scala/scala_extractors.htm" rel="nofollow">example</a><br> によるとScalaの

object objPersamaan{ 
     def main(args : Array[String]){ 
     val x = objPersamaan("Budi ") 
     println(x) 
     } 
     def apply(pX:String) = pX + "Belajar" 
     def unapply(pZ:Int) : Option[Int] = if(pZ%2==0) Some(pZ/2) else None 
    } 

私はまだどのようにobjPersamaan(「ブディ」)することができ、理解しないことはできません価値があったBudi Belajar?その方法ですのようなコンストラクタをパラメータに適用しますか?または何?誰でも、より詳細な理由を説明する方法からを適用する?ありがとう!

答えて

5

Scalaでは、メソッド名applyを省略できます。したがって、objPersamaan("Budi ")を呼び出すのは、objPersamaan.apply("Budi ")と同じです。これは、文字列Belajarを指定されたパラメータに連結します。

オブジェクトを持ち、メソッド名なしで引数を指定すると、copmilerはMyObject.apply(...)でこの呼び出しを展開します。これは、実際には何か(たとえば工場内)を適用したいオブジェクトを使用することが多いため、Scalaはこの機能を言語に直接組み込んでいます。

case class MyObj(foo: String, bar: String) 
object MyObj { 
    def apply(x: Int): MyObj = MyObj(x.toBinaryString, x.toHexString) 
} 

// ... 
MyObj(42) 
// same as 
MyObj.apply(42) 
+0

は大丈夫あなたにマーティン そんなに感謝[リンク](http://www.tutorialspoint.com/scala/scala_extractors.htm) –

+0

答えはあなたを助けている場合、あなたは受け入れられたとして、それをマークする必要があり、感謝! –

+0

hehehe、私はすでにやった。 –

関連する問題

 関連する問題