【问题标题】:Instance variable is not initialized. Why is that?实例变量未初始化。这是为什么?
【发布时间】:2017-01-06 08:54:33
【问题描述】:

我的实例变量遇到了这个问题。它们不会被初始化,我不确定究竟是什么意思。我上的每一节课都是一样的。我发布了以下代码之一:

class Good
types
  public evalGood :: 
  good : Good
  price : nat1;

 instance variables
    private owner : Seller;
    private startPrice : nat1;
    private description : seq of char

operations
  public  getStartPrice : ()  ==> nat1
  getStartPrice() == (return startPrice);

end Good

我希望有人可以帮助我,也许可以解释原因,这样就不会再发生了

问候, 卡米拉

【问题讨论】:

    标签: vdm++


    【解决方案1】:

    当您声明实例变量时,它们的值是“未定义的” - 即。没有特别的价值 - 除非你分配它们。您可以使用初始化程序(最后说“:= 123”)或将它们设置为构造函数中的值。如果你两者都不做,Overture 会给你这个警告。这不一定是错误,但您必须在使用变量之前将它们设置为一个值。

    【讨论】:

    • 嗨尼克。非常感谢你。我认为这对我有帮助。可能是因为我只是“隐式”地工作,我没有抓住/理解这个错误吗?您可以尝试将“123”分配给我的代码来举例吗?我认为这也会澄清一些事情。非常感谢。
    • 我的意思是您可以将定义更改为“private startPrice:nat1 := 123”。这可能没有什么意义(!),但它会删除该字段的警告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多