异构阵列的意义何在?
我知道比Java更动态的语言,如Python和Ruby,通常允许你将混合类型的对象放在数组中,如下所示:
["hello", 120, ["world"]]
我不明白的是,为什么你会使用这样的功能。如果我想在Java中存储异构数据,我通常会为它创建一个对象。
例如,假设 a has 和 .虽然我看到在Python / Ruby / PHP中你可以做这样的事情:User
int ID
String name
[["John Smith", 000], ["Smith John", 001], ...]
这似乎比创建一个带有属性的类然后拥有数组更安全/ OO:User
ID
name
[<User: name="John Smith", id=000>, <User: name="Smith John", id=001>, ...]
其中,这些内容表示用户对象。<User ...>
在支持前者的语言中,是否有理由使用前者而不是后者?还是有更大的理由使用异构阵列?
注意:贝我不是在谈论包含不同对象的数组,这些对象都实现了相同的接口或从同一父级继承,例如:
class Square extends Shape
class Triangle extends Shape
[new Square(), new Triangle()]
因为至少对于程序员来说,这仍然是一个同构数组,因为你将对每个形状做同样的事情(例如,调用方法),只有两者之间通常定义的方法。draw()