close
expression/statement 的差別在於 statement 並沒有 yield 一個值回來。
dlr expression 既然是 expression,該怎麼表示 statement?? 就用 conditional expressions, if 在 dlr 裡就 conditional expressions,block expressions 的回傳值就是最後一個expression的傳回值。

這一章主要介紹常見的 c# 語法與 DLR expression 的對照,對了解 DLR expression 的使用有很大幫助。

自訂Expression,要繼承System.Linq.Expressions.Expression,然後NodeType property要傳回ExpressionType.Extension。這有點像Extension的意味,這節最後說 IronPython.Compiler.Ast 裡自訂了很多,像ForStatement、ImportStatement、ScopeStatement...等等,我覺得有點像是簡化 DLR expression 使用的意味,或是 DLR expression 的 function...

最後有講到利用 Visitor pattern 來變更 expression tree,因為 expression tree 是 immutable,不可變動的,唯讀的,要變更其中一個節點,得大費周張,因此有變形的 Visitor pattern。這邊還不是很懂,看後面有沒有更好的例子。

這一章花了約三到四天,每天約花30分鐘~60分鐘...

More about Pro DLR in .NET 4

arrow
arrow
    全站熱搜

    elleryq 發表在 痞客邦 留言(0) 人氣()