2010-05-27 23 views
2

原則,我想使用以下方法來生成供以後使用命名模式:如何在Mathematica中生成命名模式?

In[1]:= Replace[var["x"],var[name_]:>Pattern[Apply[Symbol,name],_]] 

我希望看到這樣的結果。命名模式,我可以在以後的使用規則:

Out[1]= x_ 

而是我:

Out[1]= Pattern[Symbol @@ x,_] 

文檔說模式[..]只能用一個符號作爲第一個使用論據。應用[Symbol,name]不計算返回符號,所以Pattern [..]不匹配。

何從字符串名稱得到一個命名模式?

+0

而你的問題是?你的意圖是? – 2010-05-27 13:04:58

回答

3

模式name_與字符串"x"相匹配,結果導致Apply[Symbol,"x"]返回頭部爲String的對象。然後傳遞給Pattern,它返回你看到的內容。爲了得到你所期望的,你必須通過SymbolPattern。檢查您使用FullForm[]獲得的各種輸出。

你或許可以通過改變片段做到這一點:

Pattern[Apply[Symbol,name],_]] 

Pattern[Evaluate[ToExpression[name],_]] 

但如果ToExpression[name]返回Symbol纔會工作。我發現我不得不強制評估。

+0

謝謝一堆。這完全是我想要的。 :) – punytroll 2010-05-27 15:40:34