Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Yuval extends App {
- class Animal {
- this: Reflect =>
- }
- implicit def reflectOrdering: Ordering[Animal with Reflect] = Ordering.by(e => e.canReflect)
- object Animal {
- def isGreaterAnimal(first: Animal with Reflect, second: Animal with Reflect)(implicit ev: Ordering[Animal with Reflect]) = ev.gt(first, second)
- }
- trait Reflect{
- val canReflect: Boolean
- }
- trait Reflective extends Reflect{
- val canReflect = true
- }
- trait Automaton extends Reflect{
- val canReflect = false
- }
- val reflective = new Animal with Reflective
- val robot = new Animal with Automaton
- println(Animal.isGreaterAnimal(reflective, robot))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement