Nemerle - 如何使用通用约束和“require”条件编写方法签名?

时间:2016-07-03 17:04:59

标签: generics design-by-contract preconditions nemerle

使用Nemerle,我想创建一个具有泛型类型约束和'requires'前置条件的方法。关于方法的返回类型,这些的正确顺序/语法是什么?

这是我想要的C#示例:

//Count the number of items in a 2D array
public static int CountAll<T>(this T[] source)
    where T : Array
{
    Contract.Requires(source != null);
    return source.Sum(sub => sub.Length);
}

这是我最好的Nemerle猜测,编译器不喜欢这样:

public static CountAll[T](this source : array[T]) : int
    where T : array
    requires source != null
{
    source.Sum(sub => sub.Length);
}

如何进行编译?

修改

当我实际意为array时,我使用的是System.Array关键字。

编译:

public static CountAll[T](this source : array[T]) : int 
    where T : System.Array
    requires source != null
{
    source.Sum(sub => sub.Length);    
}

0 个答案:

没有答案