Sml 如何在ML中获取新类型的元素?
例如,如果我创建了一个新类型 类型map=int*string val a=1,a:int*字符串 然后我想从变量a中得到内部字符串a,我怎么能得到呢?Sml 如何在ML中获取新类型的元素?,sml,smlnj,ml,Sml,Smlnj,Ml,例如,如果我创建了一个新类型 类型map=int*string val a=1,a:int*字符串 然后我想从变量a中得到内部字符串a,我怎么能得到呢? 我试过a[1]、a[2]、a2,但它们不起作用…因为新类型只是一个两元组,所以您可以使用模式匹配,就像您对其他类型一样: - val a = (1, "a"); val a = (1,"a") : int * string - case a of (_, str) => str; val it = "a" : string - (fn
我试过a[1]、a[2]、a2,但它们不起作用…因为新类型只是一个两元组,所以您可以使用模式匹配,就像您对其他类型一样:
- 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;
由于新类型只是一个两元组,因此可以使用模式匹配,就像对其他类型一样:
- 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;
可以使用n运算符获取任何元组的第n个元素。在答复中:
- #1("one", "two");
val it = "one" : string
- #2("one", "two");
val it = "two" : string
可以使用n运算符获取任何元组的第n个元素。在答复中:
- #1("one", "two");
val it = "one" : string
- #2("one", "two");
val it = "two" : string
非常感谢你!但是类型未知的情况如何,例如val findElem=fn u,u,'a=>'a,第三个元素有一个未知类型,它将有一个错误'error:syntax error:deleting TYVAR RPAREN DARROW'如果我写val findElem=fn u,u,'a=>'astr只是一个变量,它没有特殊意义。使用您想要的任何变量名,ML将推断出它所能推断出的最多态的类型。非常感谢您!但是类型未知的情况如何,例如val findElem=fn u,u,'a=>'a,第三个元素有一个未知类型,它将有一个错误'error:syntax error:deleting TYVAR RPAREN DARROW'如果我写val findElem=fn u,u,'a=>'astr只是一个变量,它没有特殊意义。使用任何您想要的变量名,ML将推断出它所能推断出的最多态的类型。