Online Mind Mapping and Brainstorming

Create your own awesome maps

Online Mind Mapping and Brainstorming

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account? Log In

Scala Learning Tree (for Java developers) by Mind Map: Scala Learning Tree (for Java developers)
5.0 stars - 3 reviews range from 0 to 5

Scala Learning Tree (for Java developers)

Variance in generics

Declaration vs Use-Site

Co/Con/In-variance

Reflection

classOf[]

Manifest and ClassManifest

instanceof

Implicits

Conversions

Parameters

Implicit Scope

Collections

Mutable vs Immutable

Seq vs List vs Iterable vs Traversable

Maps

Lists

Tuples / Pair

a -> b syntactic sugar

(a,b) syntactic sugar

Basic Generics

[] notation

Exception Handling

packages and imports

_ instead of *

import anywhere

multiple package statements and resolution

import from an instance

First-Class Functions

apply()

passing as an argument

functions vs methods

anonymous functions

Partial Application

Currying

Singleton as a Function

Anonymous => syntactic sugar

vals/vars

'name:Type' instead of 'Type name'

equivalent to Java's final

immutability encouraged by default

To Be Organised

Scope

private[this]

private[package]

private[<whatever>]

Objects and Friends

classes

Singletons

Companions

Traits

Case Class Basics

Package Objects

notes on this map

Try not to mention any feature unless it's defined in terms of stuff above it on the list

Methods (defs)

Don't *require* parenthesis

multiple argument lists

Unit instead of void

': Unit' vs. not using '='

If single statement, don't require { braces }

Named arguments

Default arguments

Varargs and the _* notation

override is a required keyword, not an annotation

Exception checking is not forced

'Nothing' subclasses everything

Nested/inner methods

Uniform Access Principle

How getters/setters work

Overriding defs with vals/vars

@BeanPropery and @BeanInfo

Type Basics

Inference

Type Ascription

Any/AnyRef/AnyVal vs Object

Oddities and FAQs

null vs Option[]

null/None/Nothing/Nil

Tooling support

Specialist Topics

Testing

Java Interop

Concurrency

3rd Party Libs

Patterns

binding

simple usage - assigning a tuple to 2 vals

match blocks

Matching on Structure

Matching on Type

Matching on absolutes

and case classes

Use in for comprehension

Extractors

Advanced Functions

higher-typed functions

PartialFunction

closures

For Comprehensions

Simple for (i <- 0 to 10) {println i}

Multiple Generators

Using yield to return a collection of the same type as the input

Desugaring to map/filter/flatmap/foreach

New node