0

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

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 ;; 
4

1 回答 1

1

完整的错误信息是:

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

在哪里可以看到它引用的类型变量是'aand 'b。这意味着它不知道这些参数的类型,因为它们没有以任何暗示其实际类型的方式使用。它们可以是任何东西,如果类型变量在类类型上参数化,编译器会很乐意接受。在这种情况下,很明显参数应该是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 ;; 
于 2021-08-18T13:40:14.193 回答