subtyping

    5热度

    2回答

    我刚刚阅读了关于row polymorphism以及它如何用于可扩展记录和多态变体。 但是,Ocaml使用子类型为多态变体。为什么?它比行多态性更强大吗?

    2热度

    1回答

    我正在制作一个战略游戏,并尝试应用我学到的东西,尝试使用不可变数据。在我的游戏中我有单位,这些单位可以有不同的特殊功能。例如有些飞机可以隐藏自己。我搜索是一种方法,能够做到某种 abstract class Units { val life:Int } trait Hidable { self: Units => val hided:Boolean def hide:Units wit

    2热度

    2回答

    我是新来的Java,并试图从Java泛型和集合书中了解下面的好奇语法..(我广泛使用C++模板,因此可以声称了解泛型编程的基础知识和可能的陷阱): interface Collection <E> { ... public boolean addAll(Collection<? extends E> c); ... } 为什么不能在上面写为: interface

    1热度

    1回答

    跟进this question,但我会尽量让它自成一体。 假设我有一个名为Animal的接口,这对于各种原因具有代表实现类泛型类型参数: public interface Animal<A extends Animal<A>> 我也有一个子接口,Dinosaur,其行为以同样的方式: public interface Dinosaur<D extends Dinosaur<D>> extend

    2热度

    1回答

    这两个F#类型签名之间有什么区别(如果有的话)? UseTheStream<'a when 'a :> Stream> : 'a -> unit 和 UseTheStream : (stream : Stream) -> unit 他们是否意味着在这种情况下,同样的事情? MSDN说下面讲(:>)类型的约束 type-parameter :> type -- The provided ty

    3热度

    1回答

    鉴于类型List<?>,List<Object>,List<? super Number>,List<Number>,List<Integer>和List<? extends Number>,我想了解他们的层次结构。 我知道List<Integer>不是List<Number>一个亚型,即使Integer确实是Number一个亚型,所以我认为这是代替List<? extends Number>亚型

    2热度

    1回答

    我有一个关于Java泛型类型的问题。具体来说,目前,我有类似这样的代码: public interface Foo { public <T> void bar(T[] list) } public class FooImpl implements Foo{ @Override public <T extends Comparable<? super T>> vo

    0热度

    1回答

    里面我不知道为什么下面的一般定义不会产生编译器警告: class MyClass<T extends List> { } 和上面的定义是如何 class MyClass<T extends List<?>> { } 不同每当你了解泛型,您会了解应该如何避免原始类型,因此,无论何时处理泛型类型,都会收到编译器警告。然而,第一个定义中的原始类型不会产生这样的警告。 其次,我不知道原始类型和泛型

    2热度

    1回答

    我试图在一个list利用的flexible types type IFilter<'a> = abstract member Filter: 'a -> 'a type Cap<'a when 'a: comparison> (cap) = interface IFilter<'a> with member this.Filter x = if x

    1热度

    3回答

    有人可以请解释我为什么如果我运行此代码的输出是[4,2]:null,而不是[4,2]:紫色? 我的理解是,问题出现在superClass的toString方法中。 事实上,如果从我的toString在子类中删除“最后”的超类,并且编写一个toString方法类似 public String toString() { return this.makeName(); } 一切