2014-10-02 70 views
0

您可以在Processing(Java?)中構建嵌套函數 此代碼不起作用。編譯器讀取:unexpected token:void。嵌套函數 - 處理

void keyPressed() { 
     if(click1 = true) { 
       graph(); 
     } 
     if(click2= true) { 
       points(); 
     } 
     void graph() { 
     .... 
     .... 
     } 
} 
+0

你不能用Java來完成。 – 2014-10-02 00:54:32

+0

匿名類可能是你需要的。 – 2014-10-02 00:56:54

+0

通常不應該在Processing的callBack函數中進行繪製。在那裏使用一個標誌並從'draw()'調用繪圖。 – 2014-10-02 04:54:42

回答

0

您不能嵌套函數。你可以有匿名類,例如,在一個新的線程:

Thread t = new Thread(new Runnable() { 
    @Override 
    public void run() { 
     // This is all in an anonymous Runnable class. 
    } 
}); 
+0

這是否也適用於加工? – 2014-10-02 01:07:25

+0

哦,這是一個Java的例子。處理也沒有它們。 – 2014-10-02 01:08:39

0

像其他人說:不,你不能有「本地功能」這樣的。

你也沒有正確地做你的布爾比較,因爲單個=是賦值,而不是比較。它應該是:

if(click1 == true) { 

或者因爲你已經與布爾的工作,你可以參考它直接:

if(click1) { 

無論如何,回到你的問題:你不能做什麼你我們正在談論,但你可以通過使用匿名課程來解決它。要使用匿名類,您需要通過覆蓋其中一個或多個函數來爲擴展創建一個現有類,您可以使用可以在中執行的一個或多個函數。

例如,我們有Runnable接口,我們可以通過定義一個定義run()方法的匿名類來實現,然後直接調用該匿名類。它看起來像這樣:

void keyPressed() { 
     if(click1) { 
        new Runnable(){ 
          public void run(){ 
            //do graph stuff here 
          } 
        }.run(); 
     } 
     if(click2) { 
        new Runnable(){ 
          public void run(){ 
            //do points stuff here 
          } 
        }.run(); 
     } 
} 

在這裏的匿名內部類更多信息:http://staticvoidgames.com/tutorials/objects/advancedInheritance

然而,這一切有一個非常不好的代碼的氣味,沒有任何理智的人會做這樣的方式。你爲什麼認爲你需要一種本地方法?有機會你應該使用單獨的類,或者使用普通的舊的頂級方法。