Language Features for Writing DSLs
In this section, we'll look at the Scala features that make it easy to write small DSLs:
Flexible syntax for method invocation
By-name parameters
Extension methods and
Value
classes
We'll use all of these features in the next section when we create our own DSL in Scala.
Flexible Syntax for Method Invocation
Scala has a
flexible syntax for method invocations that makes it possible to, in some
cases, omit the dot (
.
) and parentheses (
()
) when invoking methods.
The rules are as follows:
For methods that are of arity-
0
, meaning they don't take any parameters, the parentheses can be omitted and you can use the postfix notation.For methods with an arity of
1
or more, meaning they take one or more parameters, it's possible to write the method using infix notation.
Here's an example of using infix notation when invoking
filter
:
List.range(0, 10).filter(_ > 5) List.range(0, 10) filter (_ > 5)
And here's an example of omitting the parentheses when invoking...