【发布时间】:2018-08-24 04:16:47
【问题描述】:
我一直在幻想这种语言,您可以在其中定义具有相同名称但参数类型(或长度)不同的不同函数。
这是一个简单的例子,假设语法类似于 C。
struct vect {
int x;
int y;
};
struct guy {
struct vect pos;
char *name;
};
struct guy new_guy(vect v, char *name) {
struct guy g;
g.pos = v;
g.name = name;
return g;
}
struct guy new_guy(int x, int y, char *name) {
struct vect v;
v.x = x;
v.y = y;
return new_guy(v, name);
}
int get_x(struct vect v) {
return v.x;
}
int get_x(struct guy g) {
return g.pos.x;
}
重点是避免使用长名称,例如:get_vect_x 和 get_guy_x 等。编译器知道我们使用什么类型来调用函数,因此确定要使用哪个定义应该不是问题使用。
对于不同数量的参数也可以有不同的定义。
【问题讨论】:
标签: arguments programming-languages