我正在研究一个简单的口译员,以了解他们的工作方式。
我有几个方面我不确定。
我应该如何处理不同参数的操作码?
我可以有类似的东西:
void execute(int opcode, int arg1, int arg2, int arg3, Machine m);
但是这个:
-Limits me to 3 args
-Forces me to supply dummy args for opcodes taking less args
口译员通常会采用什么方式解决这个问题?
我当然可以推送一个int数组,但我想知道是否有更好的方法。
由于
答案 0 :(得分:1)
使用varargs表示法。
定义您的方法:
void execute(int opcode, Machine m, int... args);
现在您可以使用args
作为一组int(int[]
)。
这意味着所有这些符号都可以使用:
execute(opcode, m, arg1);
execute(opcode, m, arg1, arg2);
execute(opcode, m, arg1, arg2, arg3);
execute(opcode, m, arg1, arg2, arg3, arg4);
重要提示:如果您有两个相同类型的参数,其中一个是varargs,那么您必须将varargs置于单一参数之后以防止出现歧义。
正如Elliot正确指出的那样:当有其他参数时,它必须是最后一个参数。