Tuesday, September 13, 2016

Standalone object, main() : Example...

Example 1
cat Hello.scala

//A Standalong object that is used as an entry point for the
//application
//Best practice : It is recommended to have the Class/Object name
// same as the file name...although this is not mandatory in Scala
// unlike Java #109
object Hello {
   //#108. Main method takes 1 Parameter
   //      Array of String... Array[String]
   def main(args: Array[String]) = {
      //#108 : Scala implicitly imports members of Packages java.lang & scala
      // and members of Singleton object named 'Predef'. Some of 'Predef' members
      // are
      //    1. println()
      //    2. assert() etc...
      println("Hello Scala...")
   }
}
//scalac takes time ; as it has to do some initialization work 
//every time apart from compiling the given code. try 'fsc' daemon
//instead
scalac Hello.scala

ls
Hello$.class Hello.class  Hello.scala

fsc Hello.scala
[raj@Rajkumars-MacBook-Pro ~/del]$jps
10176 MainGenericRunner
10203 Jps

[raj@Rajkumars-MacBook-Pro ~/del]$fsc -shutdown
[Compile server exited]
[raj@Rajkumars-MacBook-Pro ~/del]$jps
10258 Jps

[raj@Rajkumars-MacBook-Pro ~/del]$scala Hello
Hello Scala...
Example 2
//Creating an Application entry point using App Trait #110
//This helps us to avoid creating main explicitly. Arguments 
//can be accessed through 'args'
cat HelloTrait.scala

object HelloTrait extends App {
   println("Hello Trait...")
}
[raj@Rajkumars-MacBook-Pro ~/del]$fsc HelloTrait.scala
[raj@Rajkumars-MacBook-Pro ~/del]$scala HelloTrait
Hello Trait...