在 ocaml 中,假设我们有:
type t = A of int | B of string
let x = [A 5; B "y"]
然后,我们可以迭代列表,并使用 match 语句来决定如何处理 A 或 B。
在java中,我们可以有:
ArrayList<Object> x = new ArrayList<Object>();
x.add(new Integer(5));
x.add("y");
在数组列表迭代中,我们必须使用 instanceof 和 downcast 来处理数据。
是不是,在内部,ocaml作为java携带运行时类型信息,类型匹配语句就像java instanceof-downcast一样工作,但是类型是安全的,因为没有办法写
if (element instanceof Integer) {
String e = (String) element;
}