This post is not to teach scala but a small reference for what I am going to learn about Scala. I am referring to the book “Programming in Scala”.
Feel free to look at small code snippets I used to get started with JVM based OOP and functional programming language. I will start with Scala shell prompt.
1. val defines variables similar to final identifier in Java:
scala> val msg="Hello World" msg: java.lang.String = Hello World scala> println(msg) Hello World scala> msg="Hi" <console>:5: error: reassignment to val msg="Hi" ^ scala>
2. Print a value or variable using println():
scala> println("Hello Scala") Hello Scala scala> println(msg) Hello World
3. Using variables:
scala> var msg="Hello Scala" msg: java.lang.String = Hello Scala scala> var msg2: java.lang.String = "Hello Scala with explicit data type" msg2: java.lang.String = Hello Scala with explicit data type
4. Define Function:
scala> def max(x: Int, y: Int): Int = { | if(x>y) x | else y | } max: (Int,Int)Int scala> max(5,8) res13: Int = 8
def – keyword to define function
max – function name
x and y – Parameters to function max of type Int that maps to int(primitive data type) in Java
Int – Return type of the function
scala> def greet() = println("Hello, world!") greet: ()Unit scala> greet() Hello, world! scala> greet Hello, world!
5. Scala Scripts
$ cat first_script.scala println("Hello Scala from script") $ scala first_script.scala Hello Scala from script
Arguments to Scala script are made available in an array named args and elements are accessed using () as in older languages.
$ cat second_script.scala // Comment in scala println("Hello "+args(0)) $ scala second_script.scala Rasesh Hello Rasesh $ scala second_script.scala java.lang.ArrayIndexOutOfBoundsException: 0 at Main$$anon$1.<init>((virtual file):6) at Main$.main((virtual file):4) at Main.main((virtual file))
6. Loops: while
$ cat 3_printargs.scala var i=0 while(i<args.length){ println(args(i)) i+=1 } $ scala 3_printargs.scala $ scala 3_printargs.scala Hi Hello Scala Hi Hello Scala
Note: i++ or ++i does not work in Scala as in Java
7. Loops: foreach and for
$ cat 4_foreach.scala args.foreach(arg => println(arg)) $ scala 4_foreach.scala 1 2 3 1 2 3 $ cat 4_foreach.scala args.foreach((arg:String) => println(arg)) $ scala 4_foreach.scala 1 2 3 1 2 3 $ cat 4_foreach.scala args.foreach(println) $ scala 4_foreach.scala 1 2 3 1 2 3
foreach accepts a function as an argument (functional programming aspect) and in each of 3 examples above, we passed a function to it and it executed it for each element in args array.
Imperative for:
$ cat 5_for.scala for (arg <- args) println(arg) $ scala 5_for.scala 1 2 3 1 2 3
This was first glimpse of Scala and I will continue in other post as I try different things learning Scala.
This is helpful: http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html
Pingback: Scala: Part 2 | Rasesh Mori