object addressbook { case class Person(name: String, age: Int) /** An AddressBook takes a variable number of arguments * which are accessed as a Sequence */ class AddressBook(a: Person*) { private val people: List[Person] = a.toList /** Serialize to XHTML. Scala supports XML literals * which may contain Scala expressions between braces, * which are replaced by their evaluation */ def toXHTML = { for (val p <- people) yield }
Name Age
{ p.name } { p.age.toString() }
; } /** We introduce CSS using raw strings (between triple * quotes). Raw strings may contain newlines and special * characters (like \) are not interpreted. */ val header = { "My Address Book" } ; val people = new AddressBook( Person("Tom", 20), Person("Bob", 22), Person("James", 19)); val page = { header } { people.toXHTML } ; def main(args: Array[String]) { println(page) } }