Value Classes
Code like 2 days ago is charming, but what’s the catch? Let’s take a look under the hood to see what the Scala compiler actually did to that expression. Compile the file DateUtil.scala using scalac and run javap -c UseDateUtil\$, the shadow inner class that Scala created for the singleton, and quickly search for the call to the days method. Let’s examine a few lines of bytecode around the method call:
| 5: invokevirtual #73 // Method |
| DateUtil$.DateHelper:(I)LDateUtil$DateHelper; |
| 8: getstatic #69 // Field |
| DateUtil$.MODULE$:LDateUtil$; |
| 11: invokevirtual #77 // Method |
| DateUtil$.ago:()Ljava/lang/String; |
| 14: invokevirtual #83 // Method |
| DateUtil$DateHelper.days:(Ljava/lang/String;)Ljava/time/LocalDate; |
Here’s the cost of the ...
Get Pragmatic Scala now with O’Reilly online learning.
O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.