(我不是在寻找完整的答案) 基本上,我们的任务是使用访问者模式实现几种不同类型的数字(整数,有理数,复数,实数),这样的代码
number[] N = {new Frac(3,5),new Int(1),new Real(3.14159)};
number sum = new Int(0);
foreach(number x in N) sum = sum.add(x);
将起作用。 我们得到的唯一提示是,一种方法是创建2D数组以某种方式用于分派函数?但是,鉴于该信息,我仍然不确定如何进行。老实说,很高兴看到一个带有一个参数的多重调度示例。
public class Int : Inumber
{
public int val;
public Int(int v) {val=v;}
public Int dispatch(Int x){return Int(x.val + this.val);}
public Real dispatch(Real x){return Real(x.val + this.val);}
public number add(Inumber x) { x.dispatch(this) }
}
我认为这样会发生,但这仍然行不通。 任何评论都将不胜感激