I was going through the wonderful book Programming in Scala when I came across a piece of code that just doesn’t make sense to me:
def above(that: Element): Element = {
val this1 = this widen that.width
val that1 = that widen this.width
elem(this1.contents ++ that1.contents)
}
Note line 2 and 3:
val this1 = this widen that.width
It seems like I should be able to replace this with:
val this1 = this.widen that.width
However, when I try to compile this change, it gives the following error:
error: ‘;’ expected but ‘.’ found.
val this1 = this.widen that.width
^
Why is this syntax unacceptable?
Line 2 uses the method
widenas an operator, instead of using it as a method in the Java way:The error occurs because you’ve left out the parentheses, which you can only do when you use a method in operator notation. You can’t do this for example:
Instead you should write
Actually you can do this with integers, but that’s beyond the scope of this question.
Read more: