Почему компилятор Scala выдает ошибку контравариантного типа - PullRequest
0 голосов
/ 02 октября 2019

Я получаю эту ошибку:

   [error]  found   : zio.ZIO[x.AppEnvironment,Throwable,Unit]
   [error]     (which expands to)  zio.ZIO[zio.clock.Clock with zio.blocking.Blocking with x 
               .ApplicationResources,Throwable,Unit]
   [error]  required: zio.ZIO[zio.clock.Clock with zio.blocking.Blocking,Throwable,Unit]

, но ZIO определяется как trait ZIO[-R, +E, +A], поэтому A with B with C должно быть принято в противоположной позиции для A with B.

Составлено с Scala 2.12.8, sbt 1.2.8.

1 Ответ

3 голосов
/ 02 октября 2019

, поэтому A with B with C следует принимать в противоположной позиции для A with B

Нет, это было бы, если бы позиция была co вариант. Поскольку он является контравариантным, ZIO[A with B with C, ...] является супер типом ZIO[A with B, <same types>] и не будет принят там, где ожидается этот тип.

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