Описание тега generic-variance
0
ответов
Дисперсия (ковариация и контравариантность) в функциях Скалы
Я погружаюсь в концепции FP, используя Scala. Я думаю, что я наконец понял, что такое ковариация и контравариантность и почему типы функций являются контравариантными в своих типах аргументов и ковариантными в своих типах возвращаемых значений. Но е…
07 дек '15 в 18:52
2
ответа
Почему C# не поддерживает варианты универсальных классов?
Возьмите этот небольшой пример LINQPad: void Main() { Foo<object> foo = new Foo<string>(); Console.WriteLine(foo.Get()); } class Foo<out T> { public T Get() { return default(T); } } Не удается скомпилировать с этой ошибкой: Неверны…
20 мар '15 в 13:37
0
ответов
Приведение во время исполнения с использованием параметра общего типа
Я создаю функцию диспетчеризации команд, которая позволяет объекту, производному от базового класса, разрешать (из контейнера IoC) обработчик для типа команды и отправляет объект команды туда для обработки. Мои типы выглядят так: public abstract cla…
27 фев '14 в 14:43
2
ответа
Как реализовать интерфейс Kotlin, который ссылается на соответствующий тип?
В интересах глупых мысленных экспериментов, основная цель которых состоит в том, чтобы исследовать, как работает часть языка, я решил, что хочу исследовать способ сделать программистов на Python более комфортными в Котлине. Проще говоря, я могу сдел…
27 сен '18 в 17:27
1
ответ
Почему я должен привести к параметру типа и не могу использовать ограниченный тип?
Может кто-нибудь объяснить, почему я должен привести к T и почему Add2 не принимает Bar в качестве параметра? class Foo<T> where T : class, IBar { void Add1(IDo<T> @do) { @do.Stuff(new Bar() as T); } // Add2 does not compile: // Argument…
25 апр '14 в 11:43
2
ответа
Дисперсионная функция карты списка Scala
У меня есть вопрос, который меня беспокоит. Списки в Scala являются ковариантными (List[+A]) Допустим, у нас есть эти классы: class A class B extends A map функция List[B] берет на себя функцию f: B => C Но я также могу использовать f: A => Cк…
07 дек '18 в 08:52
3
ответа
Общая дисперсия в C# 4.0
Общая дисперсия в C# 4.0 была реализована таким образом, что можно написать следующее без исключения (что происходит в C# 3.0): List<int> intList = new List<int>(); List<object> objectList = intList; [Пример не функционален: см. От…
05 фев '10 в 14:58
1
ответ
Котлин: Создание подклассов универсальных типов наследует функции и ограничивает доступные типы вывода
У меня есть следующие классы Kotlin, реализующие что-то похожее на интерфейс Collections или набор, который содержит несколько элементов. abstract class MyCollection<C: MyCollection<C>> { abstract fun contains(e: Member<C>): Member…
04 фев '18 в 18:19
1
ответ
Как я могу обработать эту ошибку, которая не является подтипом переопределенной
Я пытаюсь написать проверяемый интерфейс формы в Kotlin. В части проверки я использую https://github.com/kamedon/Validation. Вот очень простой код, который я пытаюсь запустить; import com.kamedon.validation.Validation abstract class Validatable { ab…
21 ноя '18 в 07:56
2
ответа
Как реализована общая ковариантность и контрастность в C# 4.0?
Я не посещал PDC 2008, но я слышал некоторые новости о том, что C# 4.0 объявлен для поддержки универсальной ковариации и контр-дисперсии. То есть, List<string> может быть назначен List<object>, Как это может быть? В книге Джона Скита " C…
29 окт '08 в 02:27
2
ответа
Дисперсия типов функций по сравнению с интерфейсы
Я пытаюсь понять правила дисперсии для типов функций. Кажется, что они не обрабатывают ввод и вывод одинаково (вплоть до двойственности). Рассмотрим эту программу. let mk1 s = s |> Seq.iter (fun _ -> ()) // val mk1 : s:seq<'a> -> unit…
10 апр '14 в 06:48
2
ответа
Метод одиночного расширения для IDictionary<K, IEnumerable / IList / ICollection <V >>
Я пытаюсь написать метод расширения, который будет конвертировать IDictionary<K, S<V>> проведение любого типа коллекции / последовательности (S<V>) чтобы ILookup<K, V> которая является более правильной структурой данных в эти…
26 июн '13 в 20:48
1
ответ
Проблема с использованием Lazy<T> из общего абстрактного класса
У меня есть универсальный класс, из которого происходят все мои классы DAO, который определен ниже. У меня также есть базовый класс для всех моих сущностей, но он не является универсальным. Метод GetIdOrSave будет другой тип, чем я определил SabaAbs…
20 май '10 в 18:03
1
ответ
Принудительно указать параметр типа, чтобы он был инвариантным на сайте использования, когда он ковариантен на сайте объявлений.
Я строю функцию расширения на KProperty1, Функция должна принимать аргумент, расширяющий тип значения свойства (R), даже если KProperty1 ковариантен в параметре типа R, Немного придуманный пример будет следующим, хотя мое использование более законно…
09 ноя '17 в 00:14
2
ответа
Может ли C# 4.0 помочь мне вызвать конструктор базового класса с upcast?
Я немного читал об общей дисперсии, и у меня пока нет полного понимания этого, но я хотел бы знать, делает ли это возможным что-то вроде следующего? class A<T> { } class B { } class C : B { } class My1 { public My1(A<B> lessDerivedTempla…
25 май '12 в 19:12
3
ответа
Общая типизация, так что результат одного метода может быть снова использован в качестве параметра другого метода
У меня есть код, который сводится к заводской инициализации объекта, а затем снова использовать этот объект для выполнения дополнительных операций: trait Factory[T] { def initialize(): T; def finish(t: T): Unit; } Насколько я понимаю, результат init…
15 янв '15 в 08:46
1
ответ
Универсальное решение для добавления объекта типа к объекту подходящего универсального типа
Я чувствую, что интерфейс (наоборот?) - это ответ, но я не могу найти правильное решение. Давайте иметь эти классы: public abstract class Fruit { } public class Banana : Fruit { } public class Apple : Fruit { } public abstract class Picture { } publ…
22 окт '18 в 21:43
1
ответ
C# делегат под капотом вопрос
Я немного покопался в дисперсии делегатов после прочтения следующего вопроса в SO: Delegate.CreateDelegate () и generics: Ошибка привязки к целевому методу Я нашел очень хороший фрагмент кода от Барри Келли на https://www.blogger.com/comment.g?blogI…
05 май '10 в 16:39
0
ответов
Определите контраст и ковариацию для универсального объекта
В Java ковариация для универсального может быть определена как <? extends Clazz> и противоречие может быть определено как <? super Clazz>, но возможно ли определить обе эти черты одновременно? Возьмите этот случай, например: interface Fo…
20 апр '16 в 15:48
1
ответ
Как написать метод, который принимает параметр с ковариантной или контравариантной границей в scala?
Я пишу программу Scala, которая в какой-то момент должна обеспечивать обновление статуса для некоторой задачи, и она могла бы предоставлять ее также для групп задач. Дело в том, что в разных phaseс, детали разные. Так что на самом деле существуют ра…
01 дек '15 в 15:19