Как получить минимальное значение из массива в F #? - PullRequest
2 голосов
/ 23 апреля 2011

Это код F #, настолько близкий, насколько я могу написать, чтобы найти минимальное значение массива:

let temp = 0
let getArrayMinValue (a : Array) = 
    if a.Length > 0 then (
                            for i = 0 to a.Length do
                               let temp =  ( if temp > a.[i] then a.[i] else temp )  in ()                       
                        )

У меня есть два вопроса: во-первых, a. [I] имеетошибка компиляции: Поле, конструктор или элемент 'Item' не определены.

Во-вторых, in () требуется, в противном случае возникает ошибка компиляции "Блок, следующий за этим, является незаконченным. Ожидайте выражение ".Я не совсем понимаю эту часть.

Заранее спасибо за помощь.

1 Ответ

7 голосов
/ 23 апреля 2011

Разве вы не можете использовать Array.min , чтобы найти минимальный элемент, как показано ниже:

let numbers =[|1..10|]

printfn "%A"  (numbers |> Array.min)

Приходя к вашей программе, вы должны использовать что-то вроде:

let getArrayMinValue (a : int[]) = 

а не a: Array Вы можете даже сделать a: 'T[], но, поскольку вы сравниваете значение элементов с временным значением, оно, вероятно, ограничит его значением int.

Приход к другой ошибке, сделайте временную переменную: let mutable temp = 0 и присвойте значение, используя оператор <-.Вот весь ваш код:

let mutable temp = 0


let getArrayMinValue (a : 'T[]) = 
   if a.Length > 0 then (
                        for i = 0 to a.Length do
                           temp <-  ( if temp > a.[i] then a.[i] else temp )
                        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...