a.Copy the below mentioned code into a file named ScalaObjectPassing.
b. Run > scalac ScalaObjectPassing.scala
c. Run > scala ScalaObjectPassing
import scala.io._
trait MarkerTrait {
def sayHello():String
}
object ScalaObjectPassing {
def main(args: Array[String]) {
println(ObjectWhichTakesOtherObject.sayHelloFromParam(ObjectTobePassed))
}
}
object ObjectTobePassed extends MarkerTrait {
override def sayHello():String= "ObjectTobePassed"
}
object ObjectWhichTakesOtherObject {
def sayHelloFromParam(param:MarkerTrait) = "Hello From" + param.sayHello
}
Observations
a. Scala objects are instances of class and it can be passed as parameter.
b. One Caveat to the above example is shown below which wouldnt work. One needs to create a trait(Interface) to pass around objects.
import scala.io._
object ScalaObjectPassing {
def main(args: Array[String]) {
println(ObjectWhichTakesOtherObject.sayHelloFromParam(ObjectTobePassed))
}
}
object ObjectTobePassed {
override def sayHello():String= "ObjectTobePassed"
}
object ObjectWhichTakesOtherObject {
def sayHelloFromParam(param:ObjectTobePassed) = "Hello From" + param.sayHello
}
The above code would throw an error mentioned below.
ScalaObjectPassing2: error: not found: type ObjectTobePassed
def sayHelloFromParam(param:ObjectTobePassed) = "Hello From" + param.sayHello
Hence it is important to add a trait for the above mentioned concept to work.

No comments:
Post a Comment