类型敏感的语言可以是无类型的吗?

Could a type sensitive language be typeless?

本文关键字:类型 语言      更新时间:2023-10-16

为什么不可能使Java或c++无类型?Int, float, double等任何类型都可以从基类型继承,但为什么不能呢可能还是不适用?我可以想象一个像这样的Java"无类型"函数

void some(BASETYPE anyobject, BASENUMERIC a_number) {
    for (int i = 0; i < int(a_number); i ++) {
        anyobject.doStuff(i);
    }
}

其中int继承自BASENUMERIC.

编辑很抱歉造成了混乱。什么意思不是真正的无类型,但如果任何类型继承自基类型,多态性允许我使函数可以被任何对象调用,但同时我也能够定义一个特定的类型

void any(BASETYPE of_any_type, float a_must_be_float) {
    ...

希望你现在能更好地理解我的意图。

因为所有这些隐式转换都比较慢,而且可能容易出错。顺便说一下,如果你想的话,你可以。如果您使用类变量类型(我不知道Java中是否存在这种类型),则可以为其分配任何类型的变量。

在c++中已经可以这样做了,使用模板

template<typename BASETYPE, typename BASENUMERIC>
void some(BASETYPE anyobject, BASENUMERIC a_number) {
    for (int i = 0; i < int(a_number); i ++) {
        anyobject.doStuff(i);
    }
}

适用于任何具有dostuff成员函数和类型BASENUMERIC可转换为int的BASETYPE。

主要是因为类型安全是一件好事。它可以防止调用带有字符的浮点函数。这不是问题;这个功能可以防止你搬起石头砸自己的脚。