Scala: Why can I convert Int to Unit?

后端 未结 3 707
无人及你
无人及你 2020-12-06 16:14

I\'ve recently started playing with Scala (2.8) and noticed the I can write the following code (in the Scala Interpreter):

scala> var x : Unit = 10
x : Un         


        
相关标签:
3条回答
  • 2020-12-06 16:41

    Well, anything can be converted to unit (which is its purpose). You can think of Unit as unit in the lattice of (sub)types, which means it is a supertype of everything. See Wikipedia article.

    0 讨论(0)
  • 2020-12-06 16:54

    See section "6.26.1 Value Conversions" in the Scala Language Specification version 2.8:

    ...

    Value Discarding. If e has some value type and the expected type is Unit, e is converted to the expected type by embedding it in the term { e; () }.

    ...

    0 讨论(0)
  • 2020-12-06 16:56

    Anything can be converted to Unit. This is mostly necessary to support side-effecting methods which nonetheless return values, but where the return value is often ignored. For instance

    import java.util.{List =>JList}
    
    def remove2[A](foo: JList[A], a1:A, a2:A):Unit = {
        foo.remove(a1)
        foo.remove(a2)  //if you couldn't convert the (usually pointless) return value of remove to Unit, this wouldn't type
    }
    
    0 讨论(0)
提交回复
热议问题