这个编程功能的名称是什么?

Joa*_*nge 1 static programming-languages functional-programming dynamic

在一些动态语言中,我看到过这种语法:

myValue = if (this.IsValidObject)
{
    UpdateGraph();
    UpdateCount();
    this.Name;
}
else
{
    Debug.Log (Exceptions.UninitializedObject);
    3;
}
Run Code Online (Sandbox Code Playgroud)

基本上能够返回分支中的最后一个语句作为变量的返回值,不一定仅用于方法返回,但它们也可以实现.

这个功能的名称是什么?

这也可以用静态类型语言如C#实现吗?我知道C#有三元运算符,但我的意思是使用if语句,如上所示切换语句.

小智 7

它被称为"条件分支是表达式"或"语句/表达式分裂的死亡".

请参阅条件表达式:

许多语言支持if表达式,它类似于if语句,但返回值作为结果.因此,它们是真正的表达式(评估为值),而不是语句(仅执行操作).

也就是说,语言语法中if (expr) { ... }表达式(可能是表达式语句取决于上下文)就像C,C#或Java等语言中?:表达式一样.

这种形式是在函数式编程语言(其中避开副作用)常见-但是,它不是"函数编程" 本身以及存在于其他语言,接受/允许"功能类似的语法",同时还利用重的副作用和其他范例(例如Ruby).

像Perl这样的语言允许模拟这种行为.也就是说,$x = eval { if (true) { "hello world!" } else { "goodbye" } }; print $x会显示"你好世界!" 因为即使语法生成本身不是表达式,eval 表达式也会计算到内部计算的最后一个值if.($x = if ...是Perl中的语法错误).

快乐的编码.

  • @Joan Venge声明是一个没有结果类型*的制作*(这与具有'null'或'empty'值的制作不同),因此通常(在我所知的所有流行语言中)限制生产(例如,不允许)需要表达式.例如`x =声明` - > KABOOM! (5认同)