在 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 来封装您的数据。
我想将一个字符串数组传递给 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 来封装您的数据。