Skip to content

Instantly share code, notes, and snippets.

@TomLous
Created April 25, 2017 14:04
Show Gist options
  • Save TomLous/19973768aa3c8dc1c02fd8774781053b to your computer and use it in GitHub Desktop.
Save TomLous/19973768aa3c8dc1c02fd8774781053b to your computer and use it in GitHub Desktop.
trait Parser{
def parse(i: Int):String
}
object ParserA extends Parser{
override def parse(i: Int): String = s"A: $i"
}
object ParserB extends Parser{
override def parse(i: Int): String = s"B: $i"
}
class BaseClass(parser: Parser, y: Int){
def show = parser.parse(y)
}
object BaseClass{
def makeClass = (new BaseClass(_, _)).curried
}
val extendedClassA = BaseClass.makeClass(ParserA)
val extendedClassB = BaseClass.makeClass(ParserB)
val n = extendedClassA(3)
val m = extendedClassA(5)
val o = extendedClassB(2)
n.show
m.show
o.show
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment