声明为未绑定的实例变量
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 类型上被参数化,编译器会很乐意接受。在这种情况下,参数应该是 int
s 是相当明显的,因此只需在定义中的某处为其添加类型注释就足够了。在这里,我为实例变量添加了类型注释:
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 ;;
我正在尝试使用两个参数和一个简单的 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 类型上被参数化,编译器会很乐意接受。在这种情况下,参数应该是 int
s 是相当明显的,因此只需在定义中的某处为其添加类型注释就足够了。在这里,我为实例变量添加了类型注释:
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 ;;