Show/Hide Toolbars

XSharp

代码块是 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
  }

第二个例子可以看作是一个匿名方法,有两个参数