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中的语法错误).
快乐的编码.