2008-12-19 32 views
0

我目前在我的DLR語言實現中遇到了一個問題,在該語言實現中,隨後對該語言中定義的方法的調用發生在第一次調用該方法所使用的輸入參數相同的情況下。MetaObject構造函數中限制參數的用途?

所以......如果我這樣做,我的語言:

PrintType(34); 
PrintType(34.1); 

...輸出爲:

整數

整數

我在哪裏預計:

整數

十進制

我懷疑(但仍然不能確定),從下列問題的結果:

  1. 我的電話粘合劑(InvokeAction子類)產生適當的呼叫表達式,然後用該表達式和限制返回新的MetaObject。空

  2. t因此,我認爲可能發生的情況是Restrictions參數通知DLR何時該構造可以重新用於後續對此方法的調用,並且由於我沒有固有的限制,第一個構造總是被重用(對不起,我在這裏的術語可能是錯誤的...希望你的想法)

所以......我想,我需要使用的每個參數產生限制的合併...按類型,或者可能通過實例。

有人可以確認或否認我的想法嗎?我應該探索的任何其他可能性,對於我所看到的行爲?

TIA ...

回答

1

你的想法是正確的。在這種情況下,您需要一種類型限制 - 通常,您希望限制儘可能少的限制,以便儘可能多的呼叫站點共享代碼。

這種方式的工作方式是,在向綁定器詢問規則之前,DLR正在搜索緩存的規則。限制是阻止緩存的規則適用於一組新的輸入。

+0

非常感謝(再次)迪諾......明白了。 DLR慢慢開始有意義。 :-) – JoshL 2008-12-19 18:32:23