2011-05-04 145 views
1

在回答Aaron's recent question,我想這樣做如下:分配行爲給一個變量

rule first_rule { 
    select when pageview "exampley.com/\?name=(.*)" setting (username) 
    pre { 
     isjoe = username eq "joe"; 
     myaction = defaction() { 
      thisaction = isjoe => notify("Hello, World", "Hi there, Joe!") | noop(); 
      thisaction(); 
     }; 
    } 
    { 
     notify("Will it work?", "Methinks you are #{username}"); 
     myaction(); 
    } 
} 

然而,defaction似乎永遠不會工作。它不喜歡我試圖將一個動作分配給一個變量,然後返回該變量。

我在做什麼錯?

回答

1

你真的很接近。

直到瑕疵結束,您才能調用某個操作。您需要創建一個延遲執行直到正確時間的瑕疵。

變化:

thisaction = isjoe => notify("Hello, World", "Hi there, Joe!") | noop(); 

thisaction = isjoe => defaction(){notify("Hello, World", "Hi there, Joe!");} | noop; 

注意添加defaction我從noop刪除的括號。

這個概念與JavaScript關閉類似。