Re:Scala Traits
by lmm on Wednesday June 26, 2013 @08:38AM
(#5945593)
I expected it to print "B", because D is visually closer to B so it would make more sense to me for it to be biased in that direction. (I was quite conscious that I was guessing, and wouldn't have written code depending on my assumption without testing it first)
[ Parent
| on HN ]
The behavior you get is because of class linearization: this article explains it quite clearly: https://code.google.com/p/scala-discovery/wiki/Linearization
I'm not quite sure what you mean by "visually" closer. Do you mean the actual distance in characters between "class D" and "with B"?
Intuitively, I expected the compiler to first add the "B" trait, and then the "C" trait, which overwrites what was previously added by the "B" trait. But this seems to be much more subjective that I would've thought, apparently ;)