是否有可能在处理中将void作为参数

时间:2016-09-01 14:33:34

标签: function processing

 

我正在创建一个按钮类,我希望它将一个void作为一个参数(在constroctor中),以便在用户单击它时调用void。因此,我不必void mouseClicked() {if (button.mouseIsIn()) {doIt();},并且当用户点击它时会自动调用它。像Button button = new Button(x,y,width,height,handleMouseClick());一样。提前致谢。

1 个答案:

答案 0 :(得分:0)

首先,没有“虚空”这样的东西 - 你可以使用函数并使用 void返回类型,但它没有意义称他们为空洞

话虽如此,这取决于您使用的是Java还是JavaScript模式。假设您正在使用Java模式,那么答案是,您不能将函数作为参数传递。你可以做的是传递一个类的实例,然后调用该类的函数。像这样:

 
class MyAction{
   void doIt(){
      //whatever
   }
}

定义此类后,您可以使用new关键字创建它的实例:

MyAction myAction = new MyAction();

然后您可以将其传递到Button构造函数:

Button button = new Button(x, y, width, height, myAction);

然后在Button课程中,只要您想要调用该函数,就可以调用myAction.doIt()

void mouseClicked() {
   if (button.mouseIsIn()) {
      myAction.doIt();
   }
}

您可以将此方法与匿名内部类结合使用,以便您可以使用自己的MyAction实现动态创建doIt()个实例。像这样:

MyAction actionOne = new MyAction(){
   void doIt(){
      doThingOne();
   }
}
Button buttonOne = new Button(1, 2, 3, 4, actionOne);

MyAction actionTwo = new MyAction(){
   void doIt(){
      doThingTwo();
   }
}
Button buttonTwo = new Button(1, 2, 3, 4, actionTwo);

如果您使用的是JavaScript模式,那么您可以直接将函数作为参数传递。

可以通过Google搜索“Java pass function as parameter”或“JavaScript pass function as parameter”找到更多信息。