Chapter 8. Methods
This final chapter on domain modeling covers methods, which can be defined inside classes, case classes, traits, enums, and objects. An important note—and a big change in Scala 3—is that methods can also be defined outside of those constructs. As a result, a complete Scala 3 application can look like this:
defprintHello(name:String)=println(s"Hello,$name")defprintString(s:String)=println(s)@maindefhiMom=printHello("mom")printString("Look mom, no classes or objects required!")
Scala methods are similar to methods in other typed languages. They’re defined with the def keyword, typically take one or more parameters, have an algorithm that they perform, and return some sort of result. A basic method—one that doesn’t have generic types or using parameters—is defined like this:
defmethodName(paramName1:type1,paramName2:type2,...):ReturnType=// the method body// goes here
Declaring the method return type is optional, but I find that for maintaining applications I haven’t looked at in months or years, taking a few moments to declare the type now makes it easier to understand days, months, and years from now. When I don’t add the type—or when I use other dynamically typed languages—I find that I have to take a fair amount of time in the future to look through the method body to determine what the return type is, and the longer the method, the longer that takes. So most developers agree that it’s best to declare the return now, while it’s fresh ...
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