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分鐘...
- Mar 31 Thu 2011 11:46
Pro DLR Chapter 2
close
全站熱搜
留言列表
發表留言