是否有任何语言具有delayedreturn
等关键字,允许您保存值并仅在方法完成时返回该值?
例如,类似这样的东西(Java语法):
public Integer nullify(Node<Integer> node){
delayedreturn node.getValue();
node.setValue(null);
}
我知道这不是太多的节省空间。只是好奇是否有人认为它值得实施。
答案 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
抛出的另一个异常掩盖。