Introduction to Scala

Posted by rob on July 31, 2009

I gave an Introduction to Scala talk yesterday for the software team I am a member of. I have included here the slides and code examples used in the presentation.

Presentation

Code Examples

Hello World

package org.breidecker.scalaexamples

object HelloWorld {
def main(args : Array[String]) : Unit = {
println("Hello World!")
}
}

// Notes:
// 1. main method is required to run
// 2. ": Unit =" is optional
// 3. Unit in Scala's is similar to Java's void



Hello World #2

package org.breidecker.scalaexamples

object HelloWorld2 extends Application {
println("Hello World!")
}

// Notes:
// 1. Application provides the main method
// 2. The println statement is in the object's constructor



Accessors

package org.breidecker.scalaexamples

object Accessors {
def main(args : Array[String]) {
val person = new Person;
person.firstName = ""   // Try different values here
person.lastName = "Smith"
println("Hello " + person.fullName + ".")
}

class Person {
private var theFirstName = ""
var lastName = ""

/* Overide the first name getter. */
def firstName = theFirstName.toUpperCase

/* Override the first name setter. */
def firstName_=(firstName : String) {
if (firstName != null && !firstName.trim.isEmpty) {
theFirstName = firstName
} else {
throw new IllegalArgumentException("First Name must contain a value.")
}
}

def fullName() : String = (firstName + " " + lastName).trim
}
}

// Notes:
// 1. The firstName property on the Person class is providing accessor method for the property
// 2. The instance variable for firstName had to be renamed to avoid a name conflict with the getter method
// 3. The lastName property is being referenced in the main method  with its default accessors provided by Scala



List Comprehension

package org.breidecker.scalaexamples

object ListComprehension {
def main(args : Array[String]) {
for (val color <- Colors.ALL_COLORS) {
println(color.name)
}
}

/* This is an immutable class */
class Color(newName : String) {
val name = newName
}

/* This is a Scala singleton object */
object Colors {
/* These are Scala constants. */
val blue = new Color("blue")
val green = new Color("green")
val red = new Color("red")
val yellow = new Color("yellow")
val ALL_COLORS = List(blue, green, red, yellow)
}
}

// Notes:
// 1. This example simply shows how to iterate over a list of values in Scala



Twitter Client

package org.breidecker.scalaexamples

import java.net._
import scala.xml._

object TwitterClient {
def main(args: Array[String]) {
val screenName = "robbr"    // Follow me! Try another Twitter name
val url =
new URL("http://twitter.com/users/show.xml?screen_name=" +
screenName)
val conn = url.openConnection
val xml = XML.load(conn.getInputStream)
val status = (xml\"status"\"text").text
println(screenName + ": " + status)
}
}

// Notes:
// 1. Scala uses an underscore instead of an asterisk for its package wildcard character
// 2. Java's network package is imported
// 3. Scala's built-in XML library is used
// 4. This example makes a URL request to Twitter for the current screen name
// 5. It then uses an XQuery like statement to reference status text


Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. Mateusz Fio?ka Fri, 31 Jul 2009 09:34:28 MDT

    Just wanted to point out that using int is deprecated, one should use Int, as everything in Scala is an object, even if optimized to be a value underneath.

    Nothing important, just a thing worth to rememeber.

  2. Evolutionary Goo » Blog Archive » Scala Links Tue, 18 Aug 2009 04:51:09 MDT

    [...] is a list of Scala links I compiled for an Introduction to Scala presentation I posted on this blog a couple of weeks ago. I am posting the list as a separate [...]

Comments