有没有一种语言可以将值标记为结果,然后继续函数/方法体



我正在阅读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 语句存在,但仅在执行在其他地方编写的其他代码之后。

相关内容

最新更新