- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 F# 片段没有正确输入。我猜我需要将 'a1 和 'b1 限制为 ISomething 但我不知道如何。有两个错误,都在底线上。 f 和 g 在 RHS 上的使用带有下划线,错误消息如下: A type parameter is missing a constraint 'when '?123456 :> ISomething' 唯一的区别是 g 的消息包含一个神秘的数字 1 大于那对于f。非常感谢。
type ISomething =
abstract getint : int
type IOther<'a, 'b> =
abstract map : ('a->'a1) -> ('b->'b1) -> IOther<'a1, 'b1>
type sometype<'a, 'b when 'a :> ISomething and 'b :> ISomething> (a:'a, b:'b) =
member this.map (f:'a->'a1) (g:'b->'b1) : sometype<'a1, 'b1> = sometype (f a, g b)
interface IOther<'a, 'b> with
member x.map (f:'a->'a1) (g:'b->'b1) = x.map f g :> IOther<'a1,'b1>
最佳答案
这里的问题是你的 map 函数专门构造了一个 sometype
实例。
在这种情况下,因为您要创建一个 IOther<'a, 'b>
直接使用本地 map 功能, map 功能需要 'a1
和 'b1
实现ISomething
(因为您创建了一个新的 sometype
实例),接口(interface)实现缺少约束。
在这种情况下您可以通过将约束添加到 IOther<'a, 'b>
来解决它的 map 功能,即:
type IOther<'a, 'b> =
abstract map<'a, 'b, 'a1, 'b1 when 'a1 :> ISomething and 'b1 :> ISomething> : ('a->'a1) -> ('b->'b1) -> IOther<'a1, 'b1>
这会导致 sometime.map
函数在您指定的约束范围内工作,尽管它限制了所有 IOther<'a, 'b>
仅适用于 ISomething
的实例.
如果这还不够,另一个选择是更改 sometype.map
构造一个没有约束的类型。
关于f# - f# 中的神秘类型检查错误(当出现 ?12345 :> ISomething) 时丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21999943/
我正在尝试使用 Autofac 将依赖项注入(inject)到 MVC 4 应用程序中的 FluentValidation 中。我想我已经制定了策略,但是我一直无法解决我的单例请求 ISomethin
我偶然发现了一份文档,其中 COM 对象有两种接口(interface),一种以 I 开头,第二种以 IX 开头。文档说 IX 派生自 IUnknown,而 I 派生自 IDispatch。 如果我使
这个问题在这里已经有了答案: What do you call it when one interface "inherits" from another? (6 个答案) 关闭 6 年前。 如果这
我有一个带有 Start 方法的接口(interface) ISomething。我想获得这个接口(interface)的所有实现(在多个程序集中,主要的和所有引用的)并在应用程序启动时调用 Star
我有一个接口(interface) ISomething 和一个方法 Start。我想获得这个接口(interface)的所有实现(在多个程序集中,主要的和所有引用的)并在应用程序启动时调用 Star
我有一个 F# 片段没有正确输入。我猜我需要将 'a1 和 'b1 限制为 ISomething 但我不知道如何。有两个错误,都在底线上。 f 和 g 在 RHS 上的使用带有下划线,错误消息如下:
所以,这是一个比较迟钝的问题,但让我看看我是否可以相对简单地列出它。假设我有以下界面: public interface IFoo { ICollection Bars { get; set;
使用 I 作为接口(interface)名称前缀的 .NET 标准似乎越来越普遍,并且不再仅限于 .NET。我遇到过很多使用这种约定的 Java 代码(所以如果 Java 在 C# 之前使用它,我不会
我有一个类Something实现 ISomething .如何从 IQueryable 转换/转换到 IQueryable .当我尝试转换时,我能够编译,但转换的结果始终为 NULL。 背景:我这样做
我希望以这样的方式声明一个变量,因为它只能分配从 Control 派生的值并且还实现 ISomething 接口(interface)。 我打算将 ISomething 接口(interface)添加
这可能是一个非常简单的问题,但有些东西对我来说没有意义。 给定这个类: public class Person : ICloneable { public object Clone()
我是一名优秀的程序员,十分优秀!