嵌套函数 - 处理

时间:2014-10-02 00:53:49

标签: java function nested processing void

你能在Processing(Java?)中构建嵌套函数吗? 此代码不起作用。编译器读取:意外令牌:void。

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

2 个答案:

答案 0 :(得分:0)

您无法拥有嵌套功能。您可以拥有匿名类,例如在新线程中:

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

答案 1 :(得分:0)

像其他人一样说:不,你不能拥有那样的“本地功能”。

你也没有正确地进行布尔比较,因为单个=是赋值,而不是比较。应该是:

if(click1 == true) {

或者既然你已经在使用布尔值,你可以直接参考它:

if(click1) {

无论如何,回到你的问题:你不能做你正在谈论的事情,但你可以通过使用匿名课来解决它。要使用匿名类,您需要通过覆盖其可以在方法中执行的一个或多个函数来扩展的现有类。< / p>

例如,我们有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

然而,所有这些都有一个非常糟糕的代码味道,并不是任何理智的人会这样做的方式。为什么你认为你需要一个本地方法?您可能要么使用单独的类,要么使用常规的旧顶级方法。