代码之家  ›  专栏  ›  技术社区  ›  Puneeth Reddy V

scala.Unit是否与()不同?

  •  4
  • Puneeth Reddy V  · 技术社区  · 7 年前

    我从斯卡拉看 hierarchy AnyVal 是超级类型的 scala.Unit , Boolean , Char Number 类型。

    scala> val list1 = List((),  1 ) 
    list: List[AnyVal] = List((), 1)  // I see this is valid when compared with hierarchy tree.
    
    scala> val list2 = List(Unit,  1 )
    list: List[Any] = List(object scala.Unit, 1) // Why???
    

    我懂了 list1 list2 是一种 Any

    () 不一样 Scala.Unit ? 我错过了什么?

    2 回复  |  直到 7 年前
        1
  •  5
  •   ashawley    7 年前

    回答你的问题,, () scala.Unit . 鉴于 Unit.type .

    scala> (): scala.Unit
    // (): scala.Unit
    
    scala> scala.Unit
    // res1: Unit.type = object scala.Unit
    

    底线是传递给协变列表的任何对象都将找到值的公共类型。请参阅中的讨论 Why doesn't the example compile, aka how does (co-, contra-, and in-) variance work?

    正如您所发现的,常见的 Integer 斯卡拉单位 AnyVal Intger 单位类型 Any .

        2
  •  4
  •   simpadjo    7 年前

    1) 类型 scala.Unit

    2) 反对 () 斯卡拉单位

    斯卡拉单位 -伴星 1) scala.Unit$ -不一样 .

    () 代表 1) ,在第二 Unit 3)

    推荐文章