2013-08-07 4 views
1

Я играл с MS Solver с помощью F #, и мне нужно определить домен как диапазон int. Я узнал, что есть функция: Domain.IntegerRange, которая принимает два параметра типа Rational.Domain.IntegerRange из MS Solver Foundation с использованием F #

В C# нет никаких проблем с использованием Интс вместо Rationals: http://msdn.microsoft.com/en-us/library/ff826356(v=vs.93).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

Однако в F # такое неявное преобразование не будет принят. Как это должно быть реализовано вместо этого? Я попытался каким-то образом создать Rational на основе int, но не смог этого сделать.

ответ

2

Класс Rational поддерживает неявные преобразования из int, float и т. Д., И в C# это невозможно. F #, с другой стороны, не делает неявных преобразований, если вы не просите их ... ну ... explicity.

Вы можете вызвать оператор op_Implicit непосредственно, чтобы получить то, что вы хотите:

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

Кроме того, можно определить оператор, чтобы сделать это в целом, видим стандартный подход в ответ Tomas к this question.

+0

Это наверняка поможет - спасибо за этот ответ :). –

 Смежные вопросы

  • Нет связанных вопросов^_^