Scala (programming language): Difference between revisions
imported>Yuvi Masory No edit summary |
imported>Yuvi Masory No edit summary |
||
Line 1: | Line 1: | ||
{{subpages}} | {{subpages}} | ||
'''Scala''' (pronounced /skala/)is a statically typed hybrid functional/object-oriented programming language . It compiles to the [[Java]] Virtual Machine (JVM) and has full access to classes, libraries and modules used in the host language. Scala combines aspects of functional languages such as Haskell and Erlang with the object systems of more mainstream languages such as Java and C#. A .NET implementation also exists, but is not as well maintained and has not seen significant use. | '''Scala''' (pronounced /skala/) is a statically typed hybrid functional/object-oriented programming language . It compiles to the [[Java]] Virtual Machine (JVM) and has full access to classes, libraries and modules used in the host language. Scala combines aspects of functional languages such as Haskell and Erlang with the object systems of more mainstream languages such as Java and C#. A .NET implementation also exists, but is not as well maintained and has not seen significant use. | ||
== Overview == | == Overview == |
Revision as of 10:57, 13 July 2010
Scala (pronounced /skala/) is a statically typed hybrid functional/object-oriented programming language . It compiles to the Java Virtual Machine (JVM) and has full access to classes, libraries and modules used in the host language. Scala combines aspects of functional languages such as Haskell and Erlang with the object systems of more mainstream languages such as Java and C#. A .NET implementation also exists, but is not as well maintained and has not seen significant use.
Overview
The powerful traits system allows the object/type system to be significantly more flexible, in much the same way that Ruby's "mixins" do. The current Scala implementation allows you to compile code using scalac, and to run Scala code interactively in a Scala shell.
Design Trade-offs
Prime Number Example
/** Print prime numbers less than 100, very inefficiently */
object primes extends Application {
def isPrime(n: Int) = (2 until n) forall (n % _ != 0)
for (i <- 1 to 100 if isPrime(i)) println(i)
}
This example code shows a number of features of the language, including the cross-over between the object-orientated and functional styles. An object is being defined rather than a class, following the Singleton pattern. The object uses the Application trait to turn it into an executable script. It defines a method on the primes object called isPrime which takes one Int object (Scala wraps Java's built-in int type in an object with an upper-case first character) and iterates on all numbers from two through n (the "(2 until n)" constructs a list of all those numbers), and then calculates if it is prime by dividing n by that number and seeing if it returns zero. forall is being called as a method on the array constructed by the first bracketed segment in the method definition, and the second bracketed segment contains the loop - an anonymous or lambda function. The underscore character stands in for the current iteration. The for loop shows how iteration is conducted in Scala. println at the end of the line is a call to the System.out.println method in the Java library.
Notes
- ↑ Taken from the Scala website examples section