如何创建函数来更新与 i 不同的变量?
How to create Funtion to update variables that differ i?
我有几个不同的变量 "i",例如wip0,wip1,... wip26。每一个都是整数的集合。这可能很简单,但我找不到答案。
如何创建函数来更新给定变量?
我有更新特定变量的函数,但我不想创建 27 个函数。
现在我有:
updateWip(int type, int quantity){
int temp;
temp = wip.get(type);
temp = temp + quantity;
wip.set(materialType, temp);
}
我需要这样的东西:
updateWip(int type, int quantity, int station)
How can I create a function to update a given variable?
你不知道。正确的解决方案是将 wip0, wip1,... wip26
替换为单个变量,该变量是一个包含 27 个元素的数组。然后使用数组索引 select 适当的数组元素来读取/更新。
理论上,如果变量是字段(不是局部变量!),您可以使用反射来更新变量,但这非常可怕(复杂的代码,数量级的低效,脆弱)。只是不要这样做...
在你的周围定义一个数组 class 并使用 station
参数作为数组索引,如下所示:
class Stations {
WIP[] wip = new WIP[27];
public void updateWip(int type, int quantity, int station) {
//...
wip[station].set(materialType, temp);
}
}
但是,这需要您初始化数组字段,因为像“wip[0]”这样的每个字段首先都是 null
。为了克服这个问题,您可以添加一个循环来初始化数组字段,例如在构造函数中。有关数组的更多信息,请查看 this site.
当您使用 java8 时,您还可以使用流 API 来创建包含所需内容的填充数组。然后你可以像这样在 class 中声明 属性:
WIP[] wip = IntStream.generate(() -> new WIP()).limit(27).toArray();
请参阅 this post,我从中获取流模板。
我有几个不同的变量 "i",例如wip0,wip1,... wip26。每一个都是整数的集合。这可能很简单,但我找不到答案。
如何创建函数来更新给定变量?
我有更新特定变量的函数,但我不想创建 27 个函数。
现在我有:
updateWip(int type, int quantity){
int temp;
temp = wip.get(type);
temp = temp + quantity;
wip.set(materialType, temp);
}
我需要这样的东西:
updateWip(int type, int quantity, int station)
How can I create a function to update a given variable?
你不知道。正确的解决方案是将 wip0, wip1,... wip26
替换为单个变量,该变量是一个包含 27 个元素的数组。然后使用数组索引 select 适当的数组元素来读取/更新。
理论上,如果变量是字段(不是局部变量!),您可以使用反射来更新变量,但这非常可怕(复杂的代码,数量级的低效,脆弱)。只是不要这样做...
在你的周围定义一个数组 class 并使用 station
参数作为数组索引,如下所示:
class Stations {
WIP[] wip = new WIP[27];
public void updateWip(int type, int quantity, int station) {
//...
wip[station].set(materialType, temp);
}
}
但是,这需要您初始化数组字段,因为像“wip[0]”这样的每个字段首先都是 null
。为了克服这个问题,您可以添加一个循环来初始化数组字段,例如在构造函数中。有关数组的更多信息,请查看 this site.
当您使用 java8 时,您还可以使用流 API 来创建包含所需内容的填充数组。然后你可以像这样在 class 中声明 属性:
WIP[] wip = IntStream.generate(() -> new WIP()).limit(27).toArray();
请参阅 this post,我从中获取流模板。