4. CS2

Warning

This section is not ready yet. Working on it!

4.1. Collections

  • Just for Scala
  • Doesn’t make sense before loops in most languages.
  • One mutable, one immutable
  • Many standard methods
  • Many higher-order methods
  • Syntax
  • Use () for indexing
  • List also have ML style operations
  • Creation, pass-by-name

4.2. Case Classes

  • Immutable struct in simplest usage
  • Simple syntax for grouping data
  • Works as a pattern
  • Copy method

4.3. GUIs

  • scala.swing wraps javax.swing
  • Cleaner beginner syntax
  • No explicit inheritance
  • Reactions use partial functions
  • Drawbacks: Currently no JTree, Tables complex, Button syntax uses companion object
  • Full Java2D
  • Really using Java
  • Override paint method
  • Events for animations
  • Keyboard, Mouse, Timer

4.4. CS2

  • Pure OO
  • Fewer quirks than Java
  • Powerful type system
  • Traits
  • Rich collections
  • Libraries again
  • Can make things interesting/relevant
  • Multithreading and networking
  • Eclipse (maybe) and IntelliJ (our favorite)
  • Scalable language
  • Libraries as language
  • Special methods