什么是均值方法应用于Scala

Chr*_* S. 0 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
    }
Run Code Online (Sandbox Code Playgroud)

我还是不明白,objPersamaan("Budi")怎么会有价值Budi Belajar?该方法是否像构造函数一样应用参数?或者是什么?任何人都可以解释为什么来自方法的过程适用的更多细节?谢谢!

Mar*_*ler 5

在Scala中,您可以省略方法名称apply.所以调用objPersamaan("Budi ")是相同的objPersamaan.apply("Budi "),然后将String连接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)
Run Code Online (Sandbox Code Playgroud)