I finally found a thing that I don't like about #Scala
— the following code fails with "cannot override final member":
https://scalafiddle.io/sf/lpr96Q0/2 pic.twitter.com/KBG7BT0nUD
Supporting Scala through professional training and open-source software. Responsible for Magnolia, Fury, Scala World and Functional Africa.
You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more
Add this Tweet to your website by copying the code below. Learn more
Add this video to your website by copying the code below. Learn more
By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.
| Country | Code | For customers of |
|---|---|---|
| United States | 40404 | (any) |
| Canada | 21212 | (any) |
| United Kingdom | 86444 | Vodafone, Orange, 3, O2 |
| Brazil | 40404 | Nextel, TIM |
| Haiti | 40404 | Digicel, Voila |
| Ireland | 51210 | Vodafone, O2 |
| India | 53000 | Bharti Airtel, Videocon, Reliance |
| Indonesia | 89887 | AXIS, 3, Telkomsel, Indosat, XL Axiata |
| Italy | 4880804 | Wind |
| 3424486444 | Vodafone | |
| » See SMS short codes for other countries | ||
This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.
Hover over the profile pic and click the Following button to unfollow any account.
When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.
The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.
Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.
Get instant insight into what people are talking about now.
Follow more accounts to get instant updates about topics you care about.
See the latest conversations about any topic instantly.
Catch up instantly on the best stories happening as they unfold.
I finally found a thing that I don't like about #Scala
— the following code fails with "cannot override final member":
https://scalafiddle.io/sf/lpr96Q0/2 pic.twitter.com/KBG7BT0nUD
You might say that it's normal due to "linearization order". But it's not, this makes no sense b/c I want my traits to provide "default" implementations only in case those methods are not implemented yet and I want my "abstract class" too. Java 8 works just fine:pic.twitter.com/SPtXsDbvrd
Might be worth a pre-SIP, then Dotty proposal for an enhancement... But can you explain why you want traits to only provide defaults, other than "Java does it"? I've certainly written traits overriding class behavior. And "change inheritance order" seems correct.
You can't change inheritance order when the implementation you want is in an "abstract class". And default methods are relevant for type class definitions, where the implementation is provided based on abstract methods, but that you can override for performance reasons.
I get that much of the typeclass scenario. But traits are more general, this semantics more expressive than Java’s, and your fix (“move final methods out of abstract classes”) seems to work.
Would be nice to have an annotation that makes traits behave exactly like Java interfaces.
Ancient Scala trivia: Scala used to have an `interface` keyword for defining Java interfaces which weren't allowed to have implementations.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.