我正在阅读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() 有点相似,但并不相同
Pascal做到了。返回值是通过赋值到函数名称来设置的。Swift 做了一些不太一样的事情:你可以在函数退出时将要执行的任何位置标记代码。您的 return 语句存在,但仅在执行在其他地方编写的其他代码之后。