在一些动态语言中,我见过这样的语法:
myValue = if (this.IsValidObject)
{
UpdateGraph();
UpdateCount();
this.Name;
}
else
{
Debug.Log (Exceptions.UninitializedObject);
3;
}基本上能够返回分支中的最后一条语句作为变量的返回值,不一定只是方法返回,但它们也可以实现。
这个功能的名称是什么?
这也可以在静态类型的语言中实现吗,比如C#?我知道C#有三元运算符,但我的意思是使用如上所示的if语句和switch语句。
发布于 2011-03-23 06:18:25
它是一个三元条件。
在C中,你可以使用,例如:
printf("Debug? %s\n", debug?"yes":"no");编辑:
复合语句列表可以在C中作为表达式求值。最后一条语句应该是一个表达式,并且整个复合语句都要用大括号括起来。
例如:
#include <stdio.h>
int main(void)
{
int a=0, b=1;
a=({
printf("testing compound statement\n");
if(b==a)
printf("equals\n");
b+1;
});
printf("a=%d\n", a);
return 0;
}因此,您正在执行的特征的名称是将复合语句赋值给(本地)变量。现在我认为这对你有更多的帮助。如需更多信息,请访问以下网址:http://www.chemie.fu-berlin.de/chemnet/use/info/gcc/gcc_8.html
保重,贝科。
PS。这个例子在你的问题的上下文中更有意义:
a=({
int c;
if(b==a)
c=b+1;
else
c=a-1;
c;
});https://stackoverflow.com/questions/5398484
复制相似问题