...比如Algol68或Smalltalk?这将解决的问题是初始化一个const变量,其值在if-then-else语句中确定.
是的,我知道,C++没有这样定义.但是阻碍什么呢?将if-expression重新定义为if语句会破坏向后兼容性吗?或者难以消除所需的语言文档更改的歧义?
例:
auto const x = if (some condition)
{
expression 1;
expression 2;
expression 3;
}
else
{
expression 4;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我不能这样做
auto const x = (some condition) ? expression1 : expression2;
Run Code Online (Sandbox Code Playgroud)
AnT*_*AnT 10
非正式地说,C++就像C一样,支持"语句编程"和"表达式编程"(更多细节见/sf/answers/113320721/).语句不是C++中的表达式.您不能将语句用作表达式.
在表达式编程中,您通常使用?:运算符来实现分支.但是,您也可以将表达式嵌入到语句中,反之亦然.GNU C++编译器提供了一个名为"语句表达式"的扩展,它允许将语句嵌入到表达式中.但是从C++ 11开始,您可以使用lambdas以标准方式实现相同的目标.例如
auto const x = []()
{
if (some condition)
{
expression 1;
expression 2;
return expression 3;
}
else
{
return expression 4;
}
}();
Run Code Online (Sandbox Code Playgroud)
lambda是否具有捕获和/或参数取决于您的意图.