根据这个链接 示例
然后我创建如下代码:
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?该方法是否像构造函数一样应用参数?或者是什么?任何人都可以解释为什么来自方法的过程适用的更多细节?谢谢!
在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)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |