fork download
  1. trait Foo {
  2. def foo(x: Int): String
  3. }
  4.  
  5. class FooDecorator(decorated: Foo) extends Foo {
  6. def foo(x: Int): String = s"${decorated.foo(2 * x)} decorated"
  7. }
  8.  
  9. object Main extends App {
  10. val foo1 = new FooDecorator(new Foo {
  11. def foo(x: Int) = x.toString
  12. })
  13.  
  14. println(foo1.foo(21))
  15.  
  16. // or
  17.  
  18. def fooDecorator(decorated: Int => String)(x: Int): String = s"${decorated(2 * x)} decorated"
  19.  
  20. val foo2: Int => String = fooDecorator(_.toString)
  21.  
  22. println(foo2(21))
  23. }
Success #stdin #stdout 0.42s 322496KB
stdin
Standard input is empty
stdout
42 decorated
42 decorated