在 createShape() 中使用字符串而不是某种形状

Using string instead of kind of shape in createShape()

我想将一个字符串数组传递给 draw() 中的一个函数,让该函数绘制每个形状,第一个参数指定要绘制的形状类型。这是我的代码(在 draw() 内):

params = new String[]{"LINE","0","0","2","3"};
if (params.length == 2) {
  createShape(params[0],float(params[1]));
} else if (params.length == 3) {
  createShape(params[0],float(params[1]),float(params[2]));
} ...
} else if (params.length == 5) {
  createShape(params[0],float(params[1]),float(params[2]),float(params[3]),float(params[4]));
} ...

省略号表示更多的else if语句,参数个数不同。我知道以这种方式将值传递给 createShape() 似乎是多余的,但这是我能找到的最好的方式来达到我的目的,我想知道如何让它发挥作用。目前,此代码给我一个错误并显示 The function createShape() expects parameters like: "createShape(int,)".

有什么办法可以解决这个问题,还是我必须为每种形状指定一个案例?

你不能开箱即用,但你可以这样做:

void createMyShape(String[] myArray){
  if(myArray[0].equals("LINE")){
    Shape s = createShape(LINE);
    s.vertex(int(myArray[1]), int(myArray[2]));
    s.vertex(int(myArray[3]), int(myArray[4]));
    s.endShape();
  }
  else if ...
}

此函数解析 myArray 参数并使用 if 语句采取正确的操作来创建形状。它还使用 int() 函数来解析字符串数组。

请注意,这不是一个很好的设计。您可能不应该为此使用 String 数组。最好使用 class 来封装您的数据。