Here's the code:
scala> def foo(bar: Unit => String) = {bar}
foo: (bar: (Unit) => String)(Unit) => String
scala> foo(a => a.toString)
res0: (Unit) => String = <function1>
I am guessing a is of type Unit, but isn't Unit an object? Is the Unit class hidden?
Unit
is an AnyVal
, like Int
. Its sole member is a literal, written as ()
. For example:
scala> def foo(bar: Unit => String) = {bar}
foo: (bar: Unit => String)Unit => String
scala> foo(a => a.toString)
res0: Unit => String = <function1>
scala> res0(())
res1: String = ()