我问的是c#,但我认为在大多数其他语言中也是如此。
有没有人对表达和陈述有一个很好的定义,区别是什么?
发布于 2008-08-21 00:30:31
表达式可以通过求值来获得值,而语句不返回值(它们的类型为void)。
当然,函数调用表达式也可以被认为是语句,但是除非执行环境有一个特殊的内置变量来保存返回的值,否则就无法检索它。
面向语句的语言要求所有的过程都是语句的列表.面向表达式的语言,可能都是函数式语言,是表达式的列表,或者在LISP的情况下,表示表达式列表的一个长的S-表达式。
虽然这两种类型都可以组合,但只要类型匹配,大多数表达式都可以任意组合。每种类型的语句都有自己的方法来组成其他语句,如果它们能够做到这一点的话。Foreach和if语句要么需要一个状态,要么所有的从属语句一个接一个地放在一个语句块中,除非子语句允许它们自己的子语句。
语句也可以包括表达式,其中表达式实际上并不包括任何语句。但是,一个例外是lambda表达式,它表示一个函数,因此它可以包含任何函数可以冻结的东西,除非语言只允许有限的lambda,比如Python的单表达式lambdas。
在基于表达式的语言中,您所需要的只是函数的一个表达式,因为所有控件结构都返回一个值(其中很多返回零)。不需要返回语句,因为函数中的最后一个求值表达式是返回值。
https://stackoverflow.com/questions/19132
复制相似问题