代码块是 X# 语言的重要组成部分。
传统的代码块看起来像
codeblock : { | codeblockParamList? | expression }
;
codeblockParamList : identifier (, identifier)*
;
例如
{|a,b| a*b}
X# 扩展了代码块规则。现在,我们不仅接受单个表达式,还接受语句列表和表达式列表:
codeblock : { | codeblockParamList? |
( expression
| eos statementblock
| codeblockExpressionList )
}
;
codeblockExprList : (expression? ,)+ expression // 最后一个表达式是程序块的返回值
;
例如
{|a,b| a:= Sqrt(a), a*b}
{|a,b|
? a
? b
}
第二个例子可以看作是一个匿名方法,有两个参数