Chapter 3. Rounding Out the Basics
Let’s finish our survey of essential “basics” in Scala.
Operator Overloading?
Almost all “operators” are actually methods. Consider this most basic of examples:
1+2
That plus sign between the numbers? It’s a method.
First, note that all the types that are special “primitives” in Java are actually regular objects in Scala, meaning they can have methods: Float, Double, Int, Long, Short, Byte, Char, and Boolean.
As we’ve seen, Scala identifiers can have nonalphanumeric characters, with a few exceptions that we’ll go over in a moment.
So, 1 + 2 is the same as 1.+(2), because of the “infix” notation where we can drop the period and parentheses for single-argument methods.1
Similarly, a method with no arguments can be invoked without the period. This is called “postfix” notation. However, use of this postfix convention can sometimes be confusing, so Scala 2.10 made it an optional feature. We set up the SBT build to trigger a warning if we use this feature without explicitly telling the compiler we want to use it. We do that with an import statement. Consider the following REPL session using the scala command (versus SBT console):
$scala...scala>1toStringwarning:therewere1featurewarning(s);re-runwith-featurefordetailsres0:String=1
Well, that’s not helpful. Let’s restart REPL with the -feature flag to produce a more informative warning:
$scala-feature...scala>1.toString// normal invocationres0:String=1scala>1
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access