类方法中的未绑定值

时间:2012-10-17 14:56:15

标签: class ocaml

我有这个问题,我不明白它来自哪里。 代码:

class applicationFrameworksManager =
object(this)
val mutable frameworks = []
method add_framework name = ()(* if not (List.mem name frameworks) then frameworks <- List.append frameworks [name]; *)
method get_frameworks = frameworks

端;;

错误:

Error: Some type variables are unbound in this type:
     class applicationFrameworksManager :
       object
         val mutable frameworks : 'a list
         method add_framework : 'b -> unit
         method get_frameworks : 'a list
       end
   The method add_framework has type 'b -> unit where 'b is unbound

make: * [genobjc.cmx]错误2

有人可以帮忙吗?我能绑定什么?谢谢。我会在这个类中添加很多字符串,我想最后只得到唯一的字符串。

1 个答案:

答案 0 :(得分:3)

[]的类型是多态的,因此其类型'a list包含未绑定的类型变量。如果您只想添加字符串,那么简单的修复就是声明类型:

val mutable frameworks : string list = []

你现在的课程是多态的;即,它可以用于管理任何事物的列表。您可以通过显式为类提供托管元素类型的类型参数来完成此操作。但听起来你不需要那样。