是否有一种编程语言可以将多个类型分配给一个变量

时间:2020-07-16 15:22:43

标签: function types parameter-passing

假设我们有以下代码:

UpVec sumUpVectors(UpVec vecX, UpVec vecY) { ... return vecResult; }
LeftVec sumLeftVectors(LeftVec vecX, LeftVec vecY) { ... return vecResult; }

是否有一种编程语言,可以以一种相当简单的方式允许这样的代码:

UpVec Up;
LeftVec Left;
UpVec, LeftVec mixedVec;

sumUpVectors (Up, Up);
sumUpVectors(mixedVec, Up); // no type errors
sumLeftVectors(mixedVec, Left); // no type errors
sumLeftVectors(Up, Left); // type error

在上面的伪代码中,变量Up的类型为UpVec,变量Left的类型为LeftVec,变量mixedVecUpVecLeftVec的。变量mixedVec可以传递到仅需要UpVec变量的函数中,也可以传递到需要LeftVec变量的函数中,而不会发生类型错误,而变量Up和{{1 }}。

假设语言不会强迫用户明确创建新类型作为两个现有类型的组合/联合,然后将新的单个类型分配给变量。这也避免了手动或在编译时使用重载函数:应该只有一个函数Left和一个sumUpVectors

我猜想这将使用整个类的某种幕后多重继承来完成,但是在不涉及大量重载的情况下,我看不到这样做的直接方法。

0 个答案:

没有答案