2013-08-07 5 views
1

나는 F #을 사용하여 MS Solver를 사용 해왔고 도메인을 int 범위로 정의해야합니다. Rational 기능의 두 가지 매개 변수를 사용하는 Domain.IntegerRange 함수가 있음을 알게되었습니다. http://msdn.microsoft.com/en-us/library/ff826356(v=vs.93).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1Domain.IntegerRange from F를 사용하여 솔버 재단 #

그러나, F #으로 이러한 암시 적 변환이 허용되지 않습니다

는 C#에서 유리수 대신의 int를 사용하여 아무 문제가 없습니다. 대신 어떻게 구현해야합니까? 어떻게 든 int를 기반으로 Rational을 만들려고했지만 그렇게하지 못했습니다.

답변

2

Rational 클래스는 int, float 등의 암시 적 변환을 지원하며 C#에서는 매끄럽게 변환됩니다. 반면에 F #은 암시 적 변환을 수행하지 않고 ... 음 ... 명백 함.

당신은 당신이 원하는 것을 얻기 위해 직접 op_Implicit 연산자를 호출 할 수 있습니다

let rat (i:int) = Rational.op_Implicit(i) 
Domain.IntegerRange(rat 6, rat 8) 

그것은 일반적으로이 작업을 수행하는 연산자를 정의 할 수도 있습니다이 this question에 토마스의 대답의 표준 방법을 참조하십시오.

+0

확실하게 도움이 될 것입니다 -이 답변을 주셔서 감사합니다 :). –