type-constraints

    6热度

    1回答

    在下面的示例中,对于泛型类FoobarList<T>中的类型T,我有两个约束Foobar和IFoobar<T>。但编译器给出了一个错误:不能将类型'Foobar'隐式转换为'T'。一个显式转换存在(是否缺少强制转换?) interface IFoobar<T> { T CreateFoobar(); } class Foobar : IFoobar<Foobar> {

    1热度

    3回答

    我有以下类别: public abstract class ThingBase { } public class ThingA : ThingBase { } 而下面的泛型类: public class ThingOwner<ThingType> where ThingType : ThingBase { } 我想创建一个ThingOwner例如像如下: ThingOwner<Thin

    1热度

    2回答

    我想知道在C#.NET中是否有任何类型约束,指出一个类型参数不等于另一个类型参数;这样的事情... public class FooBar<TA,TB> where TA notequalto TB 我想这样做的原因是,这样我可以创建2个加法运算按以下... public class FooBar<TA,TB> where TA notequalto TB { public sta

    2热度

    1回答

    好吧,我知道这可能是一个奇怪的问题。但我仍然需要问这个问题。它去如下: 假设我有类似如下: type Foo() = member this.MyFooFun i = 2*i type Bar() = inherit Foo() member this.MyBarFun i = 3*i type Baz() = inherit Foo()

    1热度

    3回答

    我创建了一个属性类,它表示我的SQLite数据库的表模式。类中的每个属性都成为数据库中的一个属性。 class SQLiteTables { public class tblPerson { [PrimaryKey, AutoIncrement] public int PersonID { get; set; } public string

    4热度

    1回答

    我希望有人可以建议一种方法来避免下面的“var o3”语句显式强制转换。看起来编译器应该有足够的信息来隐式投射。 using System.Collections.Generic; namespace Sample { public interface IPoint { double X { get; } double Y { get; }

    1热度

    1回答

    我想在swift中编写一个帮助函数,它允许更方便地进行排序。以下是我有什么工作: someArray.sorted({ someGetter($0) < someGetter($1) }) 相反,我还想写 someArray.sorted(comparing(someGetter)) 我试图像这样定义 func comparing<A,B : Equatable>(f: A -> B) -

    12热度

    3回答

    This question涉及构造一个适当的Monad实例,该实例为monad,但仅限于某些约束条件下,例如Set。诀窍是将其包装到ContT中,这会将约束推迟到包装/解开其值。现在我想和Applicative一样。特别是,我有一个Applicative实例,其纯粹的有一个类型约束。有没有类似的技巧如何构建一个有效的Applicative实例? (有正如there is for monads?“所

    2热度

    1回答

    考虑这个功能: f :: Num a0 => [a0] -> Int f = -- Let's leave open what we actually do here. 我们要推广此功能工作不仅对名单,而且对Set a,IntSet a等。基本上,我们希望为其中包含Num元素的任何MonoTraversable定义此函数。 这里谈到的问题:我们需要将MonoTraversable约束相结合:

    15热度

    1回答

    当类型的家庭打交道,它往往是得心应手等式约束,以避免在签名重复某种功能的名称: class Foo f where type BulkyAssociatedType f :: * foo :: BulkyAssociatedType f -> f ... bar :: forall m f b . (Monad m, Foo f, b ~ BulkyA