任何语言都有延迟退货机制吗?

时间:2013-08-06 17:57:43

标签: java return delay

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

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

public Integer nullify(Node<Integer> node){

    delayedreturn node.getValue();

    node.setValue(null);

}

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

3 个答案:

答案 0 :(得分:6)

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

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

它与您提出的内容基本相同,只是与您提出的语法不同。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

Java实际上确实有一些东西可以完成你所要求的东西,我甚至已经看到了它的一些合法用途(如果我没有弄错的话,由Doug Lea提供):

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

一般情况下这是危险的,因为try引发的异常可以被finally抛出的另一个异常掩盖。