如何在ML中获取新类型的元素?

时间:2014-11-16 20:15:13

标签: sml smlnj ml

例如,如果我创建一个新类型

type map = int * string;

val a = (1,"a") : int * string;

然后我想从变量a得到内部的“a”字符串,我怎么能得到它? 我尝试了[1],[2],a(2)并且它们不起作用......

2 个答案:

答案 0 :(得分:3)

您可以使用#n运算符来获取任何元组的n个元素。在REPL:

- #1("one", "two");
val it = "one" : string
- #2("one", "two");
val it = "two" : string

答案 1 :(得分:2)

由于新类型只是一个两元组,您可以使用模式匹配,就像使用其他类型一样:

- val a = (1, "a");
val a = (1,"a") : int * string

- case a of (_, str) => str;
val it = "a" : string

- (fn (_, str) => str) a;
val it = "a" : string

如果这成为常见操作,您可以考虑使用效用函数:

fun unpackStr (_, str) = str;