Skip to content

Instantly share code, notes, and snippets.

@zobar
Last active February 8, 2018 20:06
Show Gist options
  • Save zobar/b7dc3a1813ac10e2ba641f21a97d13ef to your computer and use it in GitHub Desktop.
Save zobar/b7dc3a1813ac10e2ba641f21a97d13ef to your computer and use it in GitHub Desktop.
trait Printer {
def print(what: String)
}
object Printer {
object Stdout extends Printer {
def print(what: String) = println(what)
}
def apply(writer: Writer): Printer = new Printer {
def print(what: String) = writer.write(what)
}
def logger(logger: Logger): Printer = new Printer {
def print(what: String) = logger.info(what)
}
}
Printer.Stdout.print("poo")
Printer(System.out).print("pee")
val logger = // ...
Printer.logger(logger).print("fart")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment