Описание тега covariance

Ковариантность, контравариантность и инвариантность описывают, как существующая иерархия наследования типов изменяется при некотором преобразовании (например, использовании в дженериках). Если преобразование сохраняет порядок исходной иерархии, оно является "ковариантным". Если он переворачивает его, это "контравариантно". Если он его сломает, он "инвариантен".
1 ответ

R's `chol` отличается от MATLAB`cholcov`. Как сделать разложение ковариантности по Холецкому?

Я пытался воспроизвести разложение ковариантности в R по типу холески - как это делается в Matlab, используя cholcov(), Пример взят из https://uk.mathworks.com/help/stats/cholcov.html. Результат оригинала cholcov() функция как их пример: T = -0.2113…
23 ноя '16 в 16:20
2 ответа

Полиморфизм, наследование и универсальный C#: невозможно преобразовать подкласс в супертип

У меня проблема с абстрактным классом и универсальным в C# (я обычно пишу на Java): вот код, который я хотел бы использовать: public interface InterfaceResult {...} public abstract class Result : InterfaceResult {...} public class ResultA : Result {…
04 авг '16 в 08:44
2 ответа

Я действительно не понимаю эту вещь со-контравариантности... У меня не может быть как обобщенных методов get, так и set?

Я думаю, что я объясню мои проблемы с некоторыми примерами.. interface IModel {} class MyModel : IModel {} interface IRepo<T> where T: IModel { } class Repo : IRepo<MyModel> { } // Cannot implicitly convert.. An explicit convertion exist…
4 ответа

C# Ковариация по типам возвращаемых подклассов

Кто-нибудь знает, почему ковариантные типы возврата не поддерживаются в C#? Даже при попытке использовать интерфейс компилятор жалуется, что это не разрешено. Смотрите следующий пример. class Order { private Guid? _id; private String _productName; p…
10 фев '12 в 22:45
2 ответа

Вывод универсального типа в C# по сравнению с ковариацией - ошибка или ограничение

Когда универсальный метод с зависимыми параметрами выводит тип, в некоторых случаях он дает неожиданные результаты. Если я указываю тип явно, все работает без каких-либо дальнейших изменений. IEnumerable<List<string>> someStringGroups = …
27 июн '17 в 09:50
2 ответа

Вопрос.net 4 дженериков

У меня есть следующая структура класса: public class A : AInterface { } public interface AInterface { } public class B<T> : BInterface<T> where T : AInterface { public T Element { get; set; } } public interface BInterface<T> where …
29 дек '09 в 03:57
2 ответа

Как я могу сделать аналог Either?

Компилятор жалуется слева (e): выражение типа Left(List[ServiceError, Nothing]) не соответствует ожидаемому типу Either[E, R] sealed trait ServiceResult[+E <: List[ServiceError], +R ] { def toEither: Either[E , R] = this match { case Success(a) =…
20 фев '15 в 11:16
1 ответ

Методы определения временной ковариации среди многих временных рядов?

Мы пытаемся определить синхронность изменения химического состава воды среди нескольких сотен участков. Для каждого сайта у нас есть временной ряд концентрации. Мы хотели бы количественно определить общую временную ковариацию (концентрации повышаютс…
02 май '18 в 16:55
1 ответ

Многомерный IReadOnlyDictionary, типизированный с использованием интерфейса для внутреннего типа значения

Это немного сложно выразить словами, поэтому я объясню на примере. Следующий код не компилируется: var data = new[] { new {Item = "abc", Values = new[] {1,2,3}}, new {Item = "def", Values = new[] {1,2,3}}}; IReadOnlyDictionary<string, IReadOnlyDi…
6 ответов

Почему IEnumerable<T> имеет только ковариантный флаг "out", а не "in" C#?

Мне было интересно, почему IEnumerable&lt;T&gt; имеет только out а не in контрвариантный флаг? public interface IEnumerable&lt;out T&gt; Я могу понять out на этом примере: IEnumerable&lt;string&gt; strings = new List&lt;string&gt;(){"a","b","c"}; IE…
07 май '12 в 08:38
1 ответ

Как сделать ковариант Consumer<? расширяет базу> работа?

Это наименьший пример кода, который я мог бы предложить для иллюстрации проблемы: public void consumeDerived(Consumer&lt;Derived&gt; derivedConsumer, Derived derivedParameter) { consumeBase(derivedConsumer, derivedParameter); } public void consumeBa…
08 июн '18 в 12:18
1 ответ

Основная функция N ков / контравариантность

У меня есть в значительной степени код, организованный так: class Person(name: String, val addr: Int) { def distance(that: Person) = this.addr - that.addr } class Employee(_name: String, role: String, _addr: Int) extends Person(_name, _addr) { def s…
24 июн '15 в 13:06
1 ответ

Ковариантность нарушена в массивах C#?

Рассмотрим следующий общий интерфейс ITest с параметром ковариантного типа Tродовой класс Test реализуя интерфейс и класс A и с подклассом B: interface ITest&lt;out T&gt; { T prop{ get;} } class Test&lt;T&gt; : ITest&lt;T&gt; { public T prop{ get { …
14 май '13 в 12:16
3 ответа

Дженерики: Список<? extends Animal> - это то же самое, что List<Animal>?

Я просто пытаюсь понять extends Ключевое слово в Java Generics. List&lt;? extends Animal&gt; означает, что мы можем заполнить любой объект в List который является Animal тогда следующее не будет означать то же самое: List&lt;Animal&gt; Может кто-ниб…
04 апр '10 в 18:01
2 ответа

C# .Net Covariance - еще раз для старых времен?

Итак, у нас есть это: public interface IWidget { int Id { get; set; } } public class Widget : IWidget { public int Id { get; set; } } public class WidgetProcessor { public static void ProcessWidgets1(IList&lt;IWidget&gt; widgets) { } public static v…
21 мар '13 в 15:52
1 ответ

Скрытая марковская модель Эмиссионная вероятность Ковариация является тождественной матрицей?

При использовании HMM должна быть установлена ​​вероятность выбросов для каждого состояния. Если он не установлен, ковариация будет единичной матрицей. Это ковариация по умолчанию в большинстве библиотек HMM, которые я использовал. Что это означает,…
12 апр '16 в 08:54
1 ответ

Суммирование отклонений / Значение np.cov с использованием Python/Numpy

Использование Python: Итак, у меня есть DataFrame с именем File, в котором я хочу найти общую дисперсию одного из столбцов "Цены". Для формулы дисперсии я понимаю, что вы должны включить ковариацию. Я читал, что np.cov даст ковариационную матрицу. О…
13 янв '14 в 21:30
2 ответа

В Scala, каким должен быть тип карты из строки в класс case и карта из строки в функции, принимающая эти классы case в качестве входного параметра?

Сценарий, который я пытаюсь смоделировать, выглядит следующим образом. У меня есть пара классов, которые отличаются по своим параметрам, но все они расширяют эту черту Entity, // case classes trait Entity case class E1(..params..) extends Entity cas…
0 ответов

Scala Generics Covariance

Я пытаюсь реализовать канал, в котором вы отправляете изображение и выполняете различные процессы, добавляя информацию способом. Каждый шаг может нуждаться в информации из предыдущего шага, и информация может сильно отличаться. Для одного шага могут…
20 май '18 в 13:51
1 ответ

Кастинг массива в Java? (ковариация и [LObject)

Мой вопрос, как точно происходит процесс приведения в Java? Предположим, у нас есть User[] users = new User[2];//&lt;-- here we get at runtime [LUser class Object[] objects = (Object[]) users;//&lt;-- here we get at runtime [LObject class public cla…
19 июл '18 в 22:29