如何在 Processing 中将函数作为输入传递给 class

How can I pass a function as input for a class in Processing

我正在制作一个在处理过程中制作分形的框架,但是,我需要使用函数作为 class 的构造函数的参数。 类似于:

class Fractal {
   String name;
   void initialize;
   Fractal(String Name, void setup) {
      ...
   }
}

我猜你来自 Java脚本背景?

传统上,Java 并没有办法做到这一点。相反,您将传递接口的 anonymous 实例,如下所示:

interface Runner{
   public void run();
}

class Fractal {
   String name;
   Runner initialize;
   Fractal(String name, Runner setup) {
      ...
   }
}

Runner r = new Runner(){
   public void run(){
      // whatever
   }
}

Fractal fractal = new Fractal("name here", r);

请注意,Java 提供了一个 Runnable 界面,您可以使用该界面而不是创建自己的界面,但我想在这里拼写出来以使其更加明显。

自 Java8 起,您可以将对函数的引用作为参数传递。这称为 lambda 函数。谷歌搜索 "Java lambda function" 将 return 大量结果。

来自this answer

public void pass() {
    run(()-> System.out.println("Hello world"));
}

public void run(Runnable function) {
    function.run();
}

根据您使用 Processing 的方式,您可能会坚持使用第一种方法,因为我认为 Processing 编辑器尚不支持 Java 8。