The Scala API Application Programmer’s Interface Reinventing the wheel  When you learn a foreign language, you learn both the grammar (syntax) and the.

Download Report

Transcript The Scala API Application Programmer’s Interface Reinventing the wheel  When you learn a foreign language, you learn both the grammar (syntax) and the.

The Scala API Application Programmer’s Interface

Reinventing the wheel

  When you learn a foreign language, you learn both the grammar (syntax) and the vocabulary   If you learn just a few hundred words, you can usually make yourself understood (though you may not understand other people), but that doesn’t make you fluent in the language If you were writing in the foreign language, you would use a dictionary to express yourself better When you learn a programming language, you learn both the syntax and the libraries (“vocabulary”)    You can write (almost) any program using only the syntax  if (me == "Tarzan") you = "Jane" You are not “speaking” Scala, you are writing it Learn to use the libraries!

2

Converting to lowercase

 scala> :paste // Entering paste mode (ctrl-D to finish) val s = "Letters AND digits, 1 2 3!" var lc = "" for (ch <- s) { if (ch >= 'A' && ch <= 'Z') { lc = lc + (ch - 'A' + 'a').toChar

} else { lc = lc + ch } }

(Entered ctrl-D)

// Exiting paste mode, now interpreting.

s: String = Letters AND digits, 1 2 3!

lc: String = letters and digits, 1 2 3!

 scala> val lc2 = s.toLowerCase

lc2: String = letters and digits, 1 2 3!

3

Discovering methods in the REPL

 In the REPL, you can hit a tab after a period to find out what methods are available  scala> "abc".

TAB

+ asInstanceOf charAt codePointAt codePointBefore codePointCount compareTo compareToIgnoreCase concat contains contentEquals endsWith equalsIgnoreCase getBytes getChars indexOf intern isEmpty isInstanceOf lastIndexOf length matches offsetByCodePoints regionMatches replace replaceAll replaceFirst split startsWith subSequence substring toCharArray toLowerCase toString toUpperCase trim  Or you can type a few letters after the period, then hit tab:  scala> "abc".to

TAB

toCharArray toLowerCase toString toUpperCase  Notice the + in the first list above 4

Operators and methods

    Operators are things like + , * , <= , && , etc.

In Scala, operators are really methods, and are in the API along with all the other methods Here’s a neat trick: If a method takes exactly one argument (in addition to the object you are talking to), you can use it like a binary operator   scala> 5.max(7) res0: Int = 7 scala> 5 max 7 res1: Int = 7  You can use this trick to save typing

and

make your code more readable Less usefully, you can treat binary operators as methods   scala> 5 + 7 res2: Int = 12 scala> 5 .+(7) res3: Int = 12

The Scala API

   Scala comes with a

LARGE

library of classes!

 Each class may contain many, many methods Scala can also use the classes that come with Java  Java also provides lots of classes and methods Altogether there are

thousands

of methods you can use!

 The Scala API (Application Programmer’s Interface) is a large collection of web pages that tells you what classes and methods are available   Access it online at http://www.scala-lang.org/api/current/ To have it available when you are not online, download the API from http://www.scala-lang.org/download/2.10.2.html

6

Using the Scala API

 Here’s the good news:  Just about any common task you can think of, the wizards at Sun, Oracle, and Typesafe have already written (and debugged!) it for you  Here’s the bad news:    It’s huge! It’s scary! It’s intimidating!

 No, really. It is.

Class, object, and method descriptions often use mysterious words and syntax that you don’t yet understand Some of what you want isn’t in the Scala API, it’s in the Java API  Some methods are poorly documented or not documented at all  Nevertheless, you have to learn to use the API

at least a little bit

7

This is where you start

8

Enter a class/object name to go there

9

Difference between “C” and “O”

    Numbers have types : 5 is an Int , 5.0 is a Double Types are defined by classes 5.0

is an object of the class Double The methods in “C” are the methods that can be applied to individual Double s, because they belong to the class Double  scala> 5.75.round

res5: Long = 6   Double is itself an object  It isn’t a number, it’s an object that describes certain kinds of numbers—those we think of as “doubles” The methods in “O” are those that can be applied to Double itself  scala> Double.MaxValue

res7: Double = 1.7976931348623157E308

Scroll down to find what you need

11

Don’t panic!

Using the Scala API can be intimidating

  It’s big! And a lot of it is confusing or incomprehensible The trick is to ignore everything you don’t understand 

Getting comfortable with the API is an

essential

part of learning to program in Scala (or any other language)

 The code in the libraries has been written by experts  Using the library methods makes your code simpler and easier to read   scala> val absrad = if (rad < 0) -rad else rad absrad: Double = 1.5707963267948966

scala> val absrad = rad.abs

absrad: Double = 1.5707963267948966

Using the Java API

13

Where to look

  The following packages are imported by default; you don’t have to do anything:   scala._ (meaning everything from the scala package)  Contains operations on numbers and various other things java.lang._ (meaning everything from the java.lang

package)  Most useful for the operations on strings These packages are imported by default because you will need them in virtually every program  Later on, you may find you need to important certain other packages   For example, if you need trigonometric functions, import scala.math

If you want to write a graphical user interface, see scala.swing

14

The End

15