2
我是新的F#的名單最大的元素,我想找到結構的最大元素形式列表:F#發現結構
type Element = struct
val X: int
val Y: int
val RES: int
new (x, y, res) =
{X = x; Y = y; RES = res;}
override this.ToString() = sprintf "%i = %i * %i" this.RES this.X this.Y
end
x比y時X.RES> Y.RES大。我寫了一些代碼:
let max2 x y = if x.RES < y.RES then y else x //BAD LINE
let max_list list =
let rec loop hi list =
match list with
| h::t -> loop (max2 h hi) t
| [] -> hi
match list with
| h::t -> loop h t
| [] -> invalidArg "list" "Empty list"
,並呼籲:
let list = findPalindromes 1 1 List.empty //this call populates the "list"
printfn "%A" (max_list list)
這個調用產生2個錯誤(指向x.RES和y.RES)的行// BAD LINE:
錯誤FS0072:根據此程序點之前的信息在不確定類型的對象上進行查找。在此程序點之前可能需要類型註釋來約束對象的類型。這可能會使查找得到解決。
我知道我應該將x和y投到Element中,但我試過這樣做,但每次都失敗了。
如何修復此代碼或以其他方式實現此功能?
向我們展示你嘗試過什麼。 –