0

是否有任何语言具有关键字,例如delayedreturn允许您保存值并仅在方法完成时返回它?

例如,像这样的东西(Java 语法):

public Integer nullify(Node<Integer> node){

    delayedreturn node.getValue();

    node.setValue(null);

}

我知道这并不能节省太多空间。只是好奇是否有人认为它值得实施。

4

3 回答 3

6

我所知道的没有类似的语言。这样的关键字很可能会导致返回值存储在临时位置,您已经可以完成:

public Integer nullify (Node<Integer> node) {
    Integer delayedReturn = node.getValue();
    node.setValue(null);
    return delayedReturn;
}

它与您所要求的基本相同,只是语法与您建议的不同。

于 2013-08-06T18:00:04.383 回答
2

一个都没见过。但是当你能做到这一点时,这并不重要:

public Integer nullify(Node<Integer> node){
    Integer delayedreturn = node.getValue();
    node.setValue(null);
    return delayedreturn;
}
于 2013-08-06T17:59:54.737 回答
2

Java 实际上确实有一些东西可以满足您的要求,而且我什至看到了它的一些合法用途(Doug Lea,如果我没记错的话):

try { return node.getValue(); } 
finally { node.setValue(null); }

通常这是危险的,因为从 抛出的异常try可以被从 抛出的另一个异常所掩盖finally

于 2013-08-06T18:27:02.283 回答