Progress-4GL中的Final / const关键字等效
如果我在Java中有一个包含不可变成员的类,我会这样做:
class MyClass {
private final String name;
private final int id;
myClass(String name, int id) {
this.name = name;
this.id = id;
}
String getName() { return name; }
int getId() { return id; }
}
在Progress-4GL中,您通常会看到类似这样的内容:(请不要讲匈牙利表示法。我也讨厌它,但它在Progress社区中很常见,所以这就是我生活中的东西。)
CLASS MyClass :
DEFINE VARIABLE mcName as CHARACTER NO-UNDO.
DEFINE VARIABLE miId as INTEGER NO-UNDO.
CONSTRUCTOR PUBLIC MyClass(INPUT ipcName AS CHARACTER,
INPUT ipiId AS INTEGER):
ASSIGN mcName = ipcName
miId = ipiID.
END. /* constructor(char,int)*/
END CLASS. /* MyClass */
有人告诉我,在进展10.2B中,他们增加了制作常数/最终变量的能力。但是,我无法在任何地方找到任何参考。在我的架构师(版本10.2A)中,我确实看到FINAL
被视为关键字。但它背后的文件只是让我失望。
如果你曾试图搜索进度文档,你就会知道我的困境。
如何在Progress 10.2B中执行不可变变量?我需要知道有什么问题吗?
谢谢!
编辑1我在FINAL
上找到了文档。它似乎只适用于类和方法。我目前的做法是
CLASS ImmutableString :
DEFINE PRIVATE VARIABLE mcValue AS CHARACTER NO-UNDO.
CONSTRUCTOR PUBLIC ImmutableString(INPUT ipcValue AS CHARACTER) :
ASSIGN mcValue = ipcValue.
END.
METHOD PUBLIC CHARACTER getValue() :
RETURN mcValue. /* Is a defensive copy required? */
END METHOD.
END CLASS.
没有找到相关结果
已邀请:
1 个回复
翱抹村
这是一个更少的代码,并做同样的事情。 已编辑以更改属性名称以匹配原始海报的示例。