什么是均值方法应用于Scala

时间:2016-06-15 06:46:19

标签: scala

根据此链接example
然后我创建这样的代码:

    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”)怎么会有价值 Budi Belajar ?那个方法应用就像带参数的构造函数一样?或者是什么?任何人都可以从方法申请解释更详细的原因吗?谢谢!

1 个答案:

答案 0 :(得分: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)