У меня есть следующий довольно простой F # функция:Неясная функция вопрос возвратного типа
let FormatValue (formatProvider : IFormatProvider) valueSuffix value =
match value > Convert.ToDecimal(valueSuffix.MinimumValueRequired) with
| true -> let normalizedValue = Convert.ToDecimal(value)/Convert.ToDecimal((Math.Pow(10., Convert.ToDouble(valueSuffix.PowerOfTen)))) in
string.Format("{0}{1}", normalizedValue.ToString(valueSuffix.Format, formatProvider), valueSuffix.Text)
| false -> ""
Возвращаемый тип правильно выводится в string
, однако я получаю маркер ошибки в string.Format
в true
ветви, говоря тип <'a> -> string
не совместим с типом ValueSuffix
. Я нахожу это особенно удивительным, поскольку все остальные типы выводятся правильно, и, в частности, в функции нет другого появления <'a>
.
Что я делаю и/или неправильно понимаю?
Я не думаю, что 'string.Format' всегда действует в F #. Это должно быть 'System.String.Format' или' String.Format' с 'открытой системой' раньше. Кроме того, следует упомянуть, что вы используете подробный синтаксис. –
Спасибо, что сделал; Мне нужно было использовать класс вместо типа. Можете ли вы добавить это как ответ, чтобы я мог принять его? (О, и я действительно не использую подробный синтаксис, 'in' просто проскользнул, пока я пытался заставить его работать.) – TeaDrivenDev