Tuesday, May 15, 2012

Scala Learning–Day 1

- REPL - Read-Evaluate-print loop
- Scala uses interpreter, but internally it uses a compiler to convert you code to byte code and run it on JVM.
-IN scala there are two ways of defining variables using "val" and "var". Val is like defining constant for which you cannot change value once assigned.
- IN scala we are encouraged to use Val unless you are really need to change the contents. Note that you need not specify the type of a value or variable.
- in case you need to specify a type then you use the below given way to do the same
val greeting: String=null
val greeting: Any="hello"
- IN scala, the type of a variable or function is always written after the name of the variable or function.
- Scala line does not to end with semi-colon, its only needed when we have multiple statements in a single line.
 
val xmax,ymax=100
var greeting, message:String=null
- Like Java, Scala got 7 numeric types and one Boolean type(Byte, Char,Short, Int,Long, Float, Double and Boolean). The difference is unlike java these types are Classes, which means there are no primitive data types.
With this you can execute methods on numbers
1.toString() which will written "1"

- Scala uses java.lang.String for defining String but it has StringOps which is more power full with hundreds of options. Similarly Scala got RichInt, RichDouble etc. to provide better options on the types.
- IN scala we use methods, not casts, to convert between numeric types
- The operators like +-*/%&|^>><< are actually methods though they just work the way they work in java or c++.
- IN scala static methods need not be called from a class. Lot of mathematical functions are defined in scala.math and we can import this using
import scala.math._ (_ is the wild char in scala like * in java).
- Scala does not have static methods instead it got "Singleton Objects".
- Scala classes got "companion objects" whose methods, whose methods just act like static methods.
- Scala methods with out arguments does not use parentheses. For example StringOps distinct does not have any arguments which you can use like "Ashok".distinct which will written all the distinct char in the string. One important note here is parameter less method that does not modify the object has no parentheses.
- In scala if we use "Ashok"(2) will written 'h'. It just works like "Ashok".charAt(2) in java. You can think this as an overloaded form of () operator.It is implemented with a method name "apply". In this StringOps its defined as given below
def  apply(n:Int):Char

- Downloaded scala from http://www.scala-lang.org/downloads. As I use windows 7 I downloaded the msi file and installed with out any issues.
- After installation check the path in the system variables for some reason I found that the path is like "C:\Program Files (x86)\scala\\bin", remove the extra '\' then start the command prompt and type "scala" which will you REPL. It running slow compared to python console. May be its because of the JVM.

Configuring eclipse  to program in scala


- Got Eclipse Indigo and extracted the files from ZIP file.
- The went to http://scala-ide.org/download/current.html and found the link to download site for scala IDE for eclipse. http://download.scala-ide.org/releases-29/stable/site
- Started eclipse from Help->New Software and downloaded the plug-in and installed it.