1 / 21

CS162 Week 2

CS162 Week 2. Kyle Dewey. Overview. More on Scala Assignment I review Secure information flow. More on Scala. Running the REPL. Just type scala at the command line Pretty nifty to quickly check to see what an expression does. Unit.

sage-booth
Download Presentation

CS162 Week 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS162 Week 2 • Kyle Dewey

  2. Overview • More on Scala • Assignment I review • Secure information flow

  3. More on Scala

  4. Running the REPL • Just type scala at the command line • Pretty nifty to quickly check to see what an expression does

  5. Unit • Essentially void, but there is an object associated with it • If you define a method without an equals, (i.e. def foo {}), then the return type is Unit • Can say () to refer to the Unitobject

  6. Seq • Some Sequence • In many ways very similar to Java’s List • List, Vector, and related classes are subclasses • Note: Scala’s List refers specifically to a linked list, more like Java’s LinkedList

  7. null • In general, null is an excellent wonderful/terrible feature • Often poorly documented whether or not null is possible • Checking for impossible cases • Not checking for possible cases

  8. Option • A solution: encode null as part of a type • For some type, say Object, if null is possible say we have a NullPossible<Object> • Scala has this, known as Option • In general, if null is possible, use Option

  9. Tuples • For when you want to return more than one thing • Can be created by putting datums in parenthesis • Can pattern match on them

  10. Sequence Processing Functions • AKA: Why while is rare and for isn’t for

  11. foreach • Applies a given function to each element of a Seq

  12. map • Like foreach, in that it applies a given function to each element of a sequence • However, it also returns a new sequence that holds the return values of each of the function calls

  13. filter • Takes a predicate, i.e. a function that returns true or false • Applies the predicate to each item in a list • A new list is returned that contains all the items for which the predicate was true

  14. foldLeft • Extremely flexible, but sometimes unwieldy • Takes a base element • Takes a function that takes a current result and a current list element • The function will manipulate result with respect to the current element

  15. flatMap • Like map, but made especially for functions that return Seqs • Will internally “flatten” all of the inner Seqs into a single Seq • More on this later in the course

  16. for Comprehensions • Much like Python’s list comprehensions • Internally translated into a series of foreach, flatMap, map, and filter operations

  17. Assignment I Review

  18. Secure Information Flow Assignment

  19. Missing File • As written, there is a missing file: util.scala • Option 1: Download zip file from the course website (under “Interpreter Code”), copy util.scala, and add it to the makefile • Option 2: Remove all mentions of the pretty printer (from util.scala)

  20. Adding a Field for the Label

  21. pc Stack • Define an object named pc • It internally has a mutable stack • There are many ways to do this, but scala.collection.mutable.Stack is probably the easiest

More Related