2012-02-10 2 views
1

실수의 문자열 표현을 실수 유형으로 변환하고 싶습니다. 나는 Real.fromString("5.5")을 할 수 있지만 실제 타입을 반환하지는 않는다는 것을 알고 있지만, 다른 어떤 실제와 곱하거나 더할 수없는 실제 옵션 타입을 반환합니다.SML에서 문자열을 실수로 변환

답변

4

패턴 일치 또는 Option 구조의 함수 중 하나를 사용하여 옵션에서 값을 추출합니다. 예를 들어 :

- val x = Real.fromString("5.5"); 
> val x = SOME 5.5 : real option 
- Option.getOpt(x, 0.0); 
> val it = 5.5 : real 
3

마이클 J. 이발사의 대답에 추가하려면, 옵션 유형은 일부 뭔가, 또는 NONE 중 하나 인 대수 데이터 형식입니다.

보통, ML에서 우리는 일반적으로 패턴 매칭과 대수 데이터 유형을 해체 :

case Real.fromString "5.5" of SOME x => x + 1.0 
          | NONE => 42.0; 

당신은 마이클 J. 이발사 제안처럼 getOpt을 사용할 수 있습니다 (실제로 getOpt 이후 Option.이 리면에 필요하지 않습니다 레벨 환경), 위의 간단한 버전입니다. 당신이 (이 NONE이없는 경우 오류 것이다), 당신은 valOf을 사용할 수있는 일부가 될 것입니다 있는지 확인하는 경우

또는 :

- val x = Real.fromString "5.5"; 
val x = SOME 5.5 : real option 
- valOf x; 
val it = 5.5 : real 

또는 당신은 멀리 그것을 패턴과 일치 할 수 val (val도 하나의 브랜치가 있지만 패턴 일치입니다.) :

- val SOME x = Real.fromString "5.5"; 
> val x = 5.5 : real