variables | ||
GOOD
| Variable. | |
BAD
| Constant. | |
| Explicit type. | |
functions | ||
GOOD
BAD
| Define function. Hidden error: without = it’s a procedure returning Unit ; causes havoc. Deprecated in Scala 2.13. | |
GOOD
BAD
| Define function. Syntax error: need types for every arg. | |
| Type alias. | |
vs.
| Call-by-value. Call-by-name (lazy parameters). | |
| Anonymous function. | |
vs.
| Anonymous function: underscore is positionally matched arg. | |
| Anonymous function: to use an arg twice, have to name it. | |
| Anonymous function: block style returns last expression. | |
| Anonymous functions: pipeline style (or parens too). | |
| Anonymous functions: to pass in multiple blocks, need outer parens. | |
| Currying, obvious syntax. | |
| Currying, obvious syntax. | |
| Currying, sugar syntax. But then: | |
| Need trailing underscore to get the partial, only for the sugar version. | |
| Generic type. | |
| Infix sugar. | |
| Varargs. | |
packages | ||
| Wildcard import. | |
| Selective import. | |
| Renaming import. | |
| Import all from java.util except Date . | |
At start of file:
Packaging by scope:
Package singleton:
| Declare a package. | |
data structures | ||
| Tuple literal (Tuple3 ). | |
| Destructuring bind: tuple unpacking via pattern matching. | |
BAD
| Hidden error: each assigned to the entire tuple. | |
| List (immutable). | |
| Paren indexing (slides). | |
| Cons. | |
same as
| Range sugar. | |
| Empty parens is singleton value of the Unit type. Equivalent to void in C and Java. | |
control constructs | ||
| Conditional. | |
same as
| Conditional sugar. | |
| While loop. | |
| Do-while loop. | |
| Break (slides). | |
same as
| For-comprehension: filter/map. | |
same as
| For-comprehension: destructuring bind. | |
same as
| For-comprehension: cross product. | |
| For-comprehension: imperative-ish.sprintf style. | |
| For-comprehension: iterate including the upper bound. | |
| For-comprehension: iterate omitting the upper bound. | |
pattern matching | ||
GOOD
BAD
| Use case in function args for pattern matching. | |
BAD
| v42 is interpreted as a name matching any Int value, and “42” is printed. | |
GOOD
| `v42` with backticks is interpreted as the existing val v42 , and “Not 42” is printed. | |
GOOD
| UppercaseVal is treated as an existing val, rather than a new pattern variable, because it starts with an uppercase letter. Thus, the value contained within UppercaseVal is checked against 3 , and “Not 42” is printed. | |
object orientation | ||
| Constructor params - x is only available in class body. | |
| Constructor params - automatic public member defined. | |
| Constructor is class body. Declare a public member. Declare a gettable but not settable member. Declare a private member. Alternative constructor. | |
| Anonymous class. | |
| Define an abstract class (non-createable). | |
| Define an inherited class. | |
| Inheritance and constructor params (wishlist: automatically pass-up params by default). | |
| Define a singleton (module-like). | |
| Traits. Interfaces-with-implementation. No constructor params. mixin-able. | |
| Multiple traits. | |
| Must declare method overrides. | |
| Create object. | |
BAD
GOOD
| Type error: abstract type. Instead, convention: callable factory shadowing the type. | |
| Class literal. | |
| Type check (runtime). | |
| Type cast (runtime). | |
| Ascription (compile time). | |
options | ||
| Construct a non empty optional value. | |
| The singleton empty optional value. | |
but
| Null-safe optional value factory. | |
same as
| Explicit type for empty optional value. Factory for empty optional value. | |
| Pipeline style. | |
| For-comprehension syntax. | |
same as
| Apply a function on the optional value. | |
same as
| Same as map but function must return an optional value. | |
same as
| Extract nested option. | |
same as
| Apply a procedure on optional value. | |
same as
| Apply function on optional value, return default if empty. | |
same as
| Apply partial pattern match on optional value. | |
same as
| true if not empty. | |
same as
| true if empty. | |
same as
| true if not empty. | |
same as
| 0 if empty, otherwise 1 . | |
same as
| Evaluate and return alternate optional value if empty. | |
same as
| Evaluate and return default value if empty. | |
same as
| Return value, throw exception if empty. | |
same as
| Return value, null if empty. | |
same as
| Optional value satisfies predicate. | |
same as
| Optional value doesn't satisfy predicate. | |
same as
| Apply predicate on optional value or false if empty. | |
same as
| Apply predicate on optional value or true if empty. | |
same as
|
Quotes
Monday, May 4, 2020
Scala CheatSheet
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment