正如@菲利普 - 斯科特 - 吉文斯指出,你可能已經做了一個完全常見(特別是C#的ERS),錯誤和使用逗號,而不是單獨一個分號的列表。
這會導致元組列表[(1,2,3,4,5)]而不是整數列表[1; 2; 3; 4; 5]。獲得意想不到的星號在你的類型定義是這樣的症狀:)
也就是說,這裏的幾個不同的功能,從你的元組,列表獲取最後一個值,元組列表(參考:https://stackoverflow.com/a/1175123/5470873):
// Data:
let tuples = [ (1,2,3,4,5); ] // = [1,2,3,4,5]
let firstListElement = tuples.[0]
// Access:
let rec lastItemInList = function
| hd :: [] -> hd
| hd :: tl -> lastItemInList tl
| _ -> failwith "Empty list."
let lastValueOfFirstItem = function
| (_, _, _, _, last) :: _ -> last
| _ -> -1
let lastValueOfTuple = function _, _, _, _, last -> last
// same as: let lastValueOfTuple myTuple =
// match myTuple with
// | (_, _, _, _, last) -> last
// Examples:
tuples |> lastItemInList // val it : int * int * int * int * int = (1, 2, 3, 4, 5)
tuples |> lastValueOfFirstItem // val it : int = 5
tuples |> List.map lastValueOfTuple // val it : int list = [5]
firstListElement |> lastValueOfTuple // val it : int = 5
列表元素用';'不是','分隔。使用'findLast [1; 2; 3; 4; 5]'或者只是'findLast [1..5]' – Lee
這裏您可以找到每個F#程序員遇到的常見錯誤列表:http://fsharpforfunandprofit.com/troubleshooting-fsharp /提示「使用分號列表分隔符」也被提及。 – Olaf