나는 새로운 형태의ML에서 새로운 유형의 요소를 얻는 방법? 예를 들어
type map = int * string;
val a = (1,"a") : int * string;
를 만드는 경우 다음 나는 그것을 얻을 수있는 방법, 변수 a로부터 내부 "는"문자열을 얻으려면? 나는 [1], [2], (2)를 시도했으나 작동하지 않는다 ...
나는 새로운 형태의ML에서 새로운 유형의 요소를 얻는 방법? 예를 들어
type map = int * string;
val a = (1,"a") : int * string;
를 만드는 경우 다음 나는 그것을 얻을 수있는 방법, 변수 a로부터 내부 "는"문자열을 얻으려면? 나는 [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