1
例如,如果我創建一個新的類型如何獲取ML中的新元素?
type map = int * string;
val a = (1,"a") : int * string;
,然後我想從變量內「一」的字符串,我怎樣才能得到呢? 我試過[1],[2],(2),它們不起作用...
例如,如果我創建一個新的類型如何獲取ML中的新元素?
type map = int * string;
val a = (1,"a") : int * string;
,然後我想從變量內「一」的字符串,我怎樣才能得到呢? 我試過[1],[2],(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;
可以使用#n
運營商獲得的n
個元素任何元組。在REPL中:
- #1("one", "two");
val it = "one" : string
- #2("one", "two");
val it = "two" : string
非常感謝你!但類型未知的情況如何,例如val findElem =(fn(_,_,'a)=>'a); ,第三個元素有一個未知類型,如果我寫入「val findElem =(fn(_,_,'a)=>'a)」,則會出現錯誤'錯誤:語法錯誤:刪除TYVAR RPAREN DARROW' – FionaMango
'str'只是一個變量,沒有特別的意義。使用你想要的任何變量名稱,ML將推斷它可以的最多態的類型。 –
謝謝你,我明白了。 – FionaMango