contravariance

    3热度

    1回答

    下面是使用泛型 class Program { static void Main(string[] args) { ICovariant<Apple> alCov = new Covariant<Apple>(); ICovariant<Fruite> fCov = alCov; IContravariant<Apple

    2热度

    1回答

    以下是一段我的代码: public interface IA<in TInput> { void Method(IB<TInput> entities); } public interface IB<in T> { } 我想不通,为什么我获得以下编译错误: “参数,必须输入安全无效方差:类型参数| TInput |必须在contravariantly有效的“IB <在T>”

    1热度

    1回答

    我在阅读Scala中的编程,我想清除一些关于编译器推断位置是否定的,中性的或肯定的规则以及确切定义为位置的规则。 我知道这个问题已经在这里问了很多,但是阅读这些答案让我更困惑。 因此,从书中的例子,并改变它有点让我可以更容易地表达我的问题。 abstract class Cat[-T, +U] { def meow[W](par1: T, par2: Cat[U,T], par3: Do

    2热度

    2回答

    以下面简化的C++类层次结构为例。我想要完成的是Service提供了一种虚拟方法来保存任意的对象。但是Service的每个子类,例如BoxService应该只能保存Box个对象。 由于这样的事实:C++不支持方法参数的协方差,我不能简单地声明的保存方法BoxService.h,如: void save(Box box); 我的问题是,有没有什么最佳设计模式或最佳实践为问题?或者,如果到达的Mo

    7热度

    3回答

    我很少与F#这个斗争时下,但是然后再次类型继承是不太常见的F#,所以也许我只是幸运。或者我错过了明显的。通常,当编译器抱怨不知道某个类型时,我会颠倒管道或组合操作数的顺序,我就完成了。 基本上,给定一个函数调用,作为g(f x),它也可以作为x |> f |> g或(f >> g) x。但今天它不... 这里是我的意思凌乱验证的概念: module Exc = open System

    2热度

    2回答

    abstract class Bhanu[-A] { val m:List[A] } 给 error: contravariant type A occurs in covariant position in type => List[A] of value m abstract class Bhanu[-A] { val m:List[A] } 而 abstract clas

    0热度

    1回答

    我有一个ModelDecorator助手。我希望它有下列公共API class ModelDecorator<T>{ public static <T> ModelDecorator<T> create(Class<T> clazz); public <SUPER> T from(SUPER fromInstance); } 因此,考虑到类A,B延伸的,可以这样使用: A

    2热度

    1回答

    我试图让Hasql对“select ... where in”查询的列表进行编码。如果我使用从contravariant-extras开始的contramany,但是我在运行时遇到语法错误,则会进行类型检查。 import qualified Database.Encoders as E import Contravariant.Extras getTeamMembership :: Que

    -2热度

    1回答

    我最近读到的协方差和逆变 - 下面一点的代码示例: public class BaseClass{ public int x = 1; public static void print(BaseClass objClass) { Console.WriteLine(objClass.GetType().Name + " " + objClass.x);

    0热度

    1回答

    我想知道真实世界的场景,我们使用逆变和协方差与program.I看到各种博客,但我仍然困惑我可以实现的地方。