是否有一种语言可以将值标记为结果,然后继续功能/方法体?

时间:2016-05-25 12:46:33

标签: return return-value

我正在阅读smalltalk教程,我想到了这个想法。

假设我们有一些语言而不是返回我们将某个值标记为最终返回值然后我们继续方法,一旦达到方法结束 - 无论其他什么被调用我们都返回标记值除非别的像这样手动指定: 假设^^是一个运算符,如果在方法结束之前没有发现显式返回,则标记返回值

m1()
{
 ^^1;
 some_other_code;
}

m2(par)
{
 ^^2;
 if par == 1: return 1;
 some code;
}

m3(par)
{
 if par == 1: return 1;
 else if par == 0: ^^0;
 do some stuff;
 if par < 0: return -1;
}

m1() should return 1
m2(0) should return 2
m2(1) should return 1
m3(0) should return 0
m3(1) should return 1
m3(-2) should return -1

这有点类似于ruby的tap()但不一样

1 个答案:

答案 0 :(得分:1)

帕斯卡尔做到了这一点。通过分配函数名来设置返回值。 Swift执行的操作并不完全相同:您可以将代码标记在函数退出时将执行的任何位置。您的return语句存在,但只有在其他地方写入其他代码后才能执行。