声明为未绑定的实例变量

Instance variable declared as unbound

我正在尝试使用两个参数和一个简单的 get 方法创建一个 class。但是我收到一个错误:某些类型变量在此类型中未绑定。所以我的问题是我做错了什么?

class basket num_apples num_bananas= 
  object
    val mutable apples = num_apples 
    val mutable bananas = num_bananas 
    method get_a= num_apples (*I suppose it has something to do with this value here*) 
      
  end ;; 

完整的错误信息是:

Error: Some type variables are unbound in this type:
         class basket :
           'a ->
           'b ->
           object
             val mutable apples : 'a
             val mutable bananas : 'b
             method get_a : 'a
           end
       The method get_a has type 'a where 'a is unbound

这里可以看到它引用的类型变量是'a'b。这意味着它不知道这些参数的类型,因为它们没有以任何暗示其实际类型的方式使用。它们可以是任何东西,如果类型变量在 class 类型上被参数化,编译器会很乐意接受。在这种情况下,参数应该是 ints 是相当明显的,因此只需在定义中的某处为其添加类型注释就足够了。在这里,我为实例变量添加了类型注释:

class basket num_apples num_bananas =
  object
    val mutable apples: int = num_apples 
    val mutable bananas: int = num_bananas 
    method get_a = num_apples
  end ;;