В чем разница между Any и Unit? - PullRequest
0 голосов
/ 09 июля 2019

В чем разница между Any и Unit в Scala?Я знаю, что оба типа данных, но в чем разница?

Ответы [ 3 ]

3 голосов
/ 09 июля 2019

Unit похож на Java void, за исключением того, что имеет фактическое значение (() является единственным значением типа Unit).

Any - родительский тип для всех остальных типов. () является экземпляром Any. 1 является экземпляром Any. "Hello" является экземпляром Any.

Any имеет два прямых подтипа; AnyVal (который включает в себя типы, которые Java будет рассматривать как «примитивы», такие как Int и Boolean) и AnyRef (например, java.lang.Object).

2 голосов
/ 09 июля 2019

Any представляет объект любого типа, примерно такой же, как void * в C / C ++.

Unit не представляет объекта, примерно так же, как void в C / C ++.

1 голос
/ 09 июля 2019

Ни один из них не несет большого семантического значения в следующем смысле:

  • , если у нас есть значение типа Any, мы на самом деле не знаем, какое это значение, если мы не приведем его во время выполнения
  • если у нас есть значение Unit, мы знаем, что побочный эффект был выполнен, но мы не очень много знаем о том, какого рода побочный эффект это было.

В идеалеМы хотим максимально сузить смысл программы, поэтому мы стараемся минимизировать использование Any и Unit, в то же время максимизируя использование семантически более богатых типов.

В качестве дополнительного примечания Any является корнем иерархии классов Scala, что означает, что даже Unit является подтипом Any, например, допустимо следующее: val a: Any = ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...