类型敏感的语言可以是无类型的吗?
Could a type sensitive language be typeless?
为什么不可能使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。
主要是因为类型安全是一件好事。它可以防止调用带有字符的浮点函数。这不是问题;这个功能可以防止你搬起石头砸自己的脚。
相关文章:
- r语言 - C++ 类型为"const std ::?
- 是否可以用类似C/C++(或任何语言)的语言,从作为用户输入的字符串或文件中创建用户定义的数据类型
- LLVM:如何在运行时跟踪非类型语言的 Value* 的数据类型?
- C ,vs 2015,致命错误:重复资源.类型:清单,名称:1,语言:0x0409
- 在闭包中,如何通过存储在内存中的指针或引用类型捕获可变性或用现代函数式语言进行处理?
- 我如何使用GO语言读取可能是两种不同数据类型之一的HDF5属性
- 使用 LLVM IR 实现动态类型语言
- 对于不确定值的无符号字符类型,标准中特殊语言对于左值到右值的转换有什么意义?
- C++制作了一个松散类型的语言解析器
- C++语言功能可简化命名类型(尤其是在函数声明中)
- 动态C++与其他语言的比较 - 在不知道类型的情况下无法在对象上调用方法
- 如何为动态类型语言构建编译器
- 如何使C枚举类型可用于其他语言
- C++在编写脚本语言时如何处理类类型
- Java 编程语言中的数据类型如何映射到本机编程语言(如 C 和 C++)中的数据类型
- C++是静态类型语言,为什么我们可以在运行时获取类型
- GCC 编译器上布尔类型的 C 和C++语言的默认初始值设定项是 64 而不是 0。这是编译器错误?
- C++仍然被视为静态类型语言
- c++在多大程度上是一种静态类型语言?
- 静态类型语言中的合并运算符