gpt4 book ai didi

java - 当实例可能具有不同的数据类型时,如何返回该实例的正确数据类型?

转载 作者:行者123 更新时间:2023-12-02 03:48:56 26 4
gpt4 key购买 nike

我在 Modula-2 中有这段代码,

PROCEDURE Prune(typeExp: TypeExp): TypeExp;
BEGIN
CASE typeExp.^class OF
| VarType:
IF typeExp^.instance = NIL THEN
RETURN typeExp;
ELSE
typeExp^.instance = Prune(typeExp^.instance);
RETURN typeExp^.instance;
END;
| OperType: RETURN typeExp;
END;
END Prune;

当我尝试将此代码转换为 java 时遇到几个问题。我可以创建一个实例并判断它的实例是否为空,然后选择返回什么。但我真的不知道如何处理情况 2,即实例可能是一个 new Opentype();因为在这种情况下只能返回一个值。

public TypeExp Prune(TypeExp typeExp){
TypeExp r = new VarType();
if (r.instance == null) {
return r;
}
else {
r.instance = Prune(r.instance);
return r.instance;
}
}

第二个问题是我不认为我可以在其内部调用函数 Prune(),那么我该怎么办?提前致谢。

最佳答案

我不太了解 Modula-2,但它可能是这样的:

public TypeExp Prune(TypeExp typeExp) {
if (typeExp instanceof VarType) {
if (typeExp.instance == null) {
return typeExp;
}
else {
typeExp.instance = Prune(typeExp.instance);
return typeExp.instance;
}
} else if (typeExp instanceof OperType) {
return typeExp;
}
//if typeExp is not an instance of VarType or OperType
return null;
}

Modula 代码不会在所有代码路径中返回。这在 Java 中是不可能的。在这些情况下我插入了 return null 。但这对于您的应用程序来说可能是错误的。

关于java - 当实例可能具有不同的数据类型时,如何返回该实例的正确数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36070409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com