如何在Scala中定义类型?喜欢
type MySparseVector = [(Int, Double)]
Run Code Online (Sandbox Code Playgroud)
在哈斯克尔或
typedef MySparseVector = std::list<std::pair(int, double)>>
Run Code Online (Sandbox Code Playgroud)
在C++中?
我试过了
type MySparseVector = List((Int, Double))
Run Code Online (Sandbox Code Playgroud)
但无法弄清楚如何使其发挥作用.如果我在类文件的开头写这个,我得到"预期的类或对象定义"错误.
PS对不起,我输错了.我试图在Scala中使用List [(Int,Double)].
无论如何(一种解决方法)在Java中定义类型同义词,类似于Scala中的以下定义?
type Row = List[Int];
Run Code Online (Sandbox Code Playgroud)
虽然它可能不完全相同,但我想到了以下代码(我用ArrayList替换了List,因为List是Java中的一个接口):
public class Row extends ArrayList<Integer>{}
Run Code Online (Sandbox Code Playgroud)
在java中有没有其他方法可以实现类型同义词机制?
考虑一个java项目执行大量浮点运算,其中效率和内存消耗可能是重要因素 - 例如游戏.如果此项目针对多个平台,通常是Android和桌面,或者更常见的32位和64位计算机,您可能希望能够构建软件的单精度和双精度构建.
在C/C++和其他低级语言中,这可以通过typedef语句轻松实现.你可以有:
typedef float myfloat;
Run Code Online (Sandbox Code Playgroud)
而你想要去的那一天64位只是改为:
typedef double myfloat;
Run Code Online (Sandbox Code Playgroud)
只要你在代码中使用myfloat.
如何在java中实现类似的效果?
全局搜索并将"float"替换为"double"(或反之亦然)具有突破与外部库的兼容性的巨大缺点,外部库仅提供一种浮点精度,其中主要是java.lang的某些函数.数学课.
当你希望保持高效并保持内存紧密时(例如,通过拥有大量的原始类型数组),使用高级多态方法并不理想.
您是否曾经处理过这种情况?如果是这样,您认为这个问题最优雅的方法是什么?
在我最近的工作中的一个大型java代码库中,我看到以下代码:
public class MapHelper extends HashMap<String, Object>{
private static final long serialVersionUID = 1L;
public MapHelper() {
super();
}
public MapHelper(MapHelper mh) {
super(mh);
}
public MapHelper as_dict(String key) {
return (MapHelper)this.get(key);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这有什么用.您是否有可以阐明上述MapHelper实用性的示例?
我有一个类型Time32用于泛型,Work<Time32>所以我做了一个类Time32.我也必须实施
typedef UInt(5) Time32
Run Code Online (Sandbox Code Playgroud)
这里UInt表示unsigned int.Java没有unsigned int,所以我创建了自己的类.
public class UInt
{
private final int size;
public UInt(int x)
{
this.size=x;
}
public int getSize()
{
return size;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不明白我如何在java中实现typedef.请帮忙.谢谢.
我需要保留UInt类,因为我有一些其他变量将使用Uint UInt(20) Load或UInt(10) Force
我已经习惯了C++和C#,我可以输入bool.在Java中,我需要输入boolean.另外,它要求我用大写的'S'键入String.我希望能够为这些变量类型创建项目范围的别名,以便通过键入bool和string来创建变量.你有什么想法?