Search code examples
scalaunit-type

Can someone explain what is going on here?


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?


Solution

  • 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 = ()