我知道f#列表中的f#列表不一样.为了能够将ac#应用程序中的int列表传递给f#库,我需要做什么?我希望能够在f#代码中对数据进行模式匹配.
您可以使用
Seq.toList : IEnumerable<'a> -> list<'a>
Run Code Online (Sandbox Code Playgroud)
将任何IEnumerable<'a> seq一个转换为F#列表.请注意,F#列表是不可变的; 如果你想使用可变列表,你不需要做任何特殊的事情,但你将无法使用模式匹配.或者,您可以定义活动模式System.Collections.Generic.List<'a>; 这只是一个坏主意.
这就是我最终的做法。
FSharp代码:
let rec FindMaxInList list =
match list with
| [x] -> x
| h::t -> max h (FindMaxInList t)
| [] -> failwith "empty list"
let rec FindMax ( array : ResizeArray<int>) =
let list = List.ofSeq(array)
FindMaxInList list
Run Code Online (Sandbox Code Playgroud)
c 夏普代码:
List<int> myInts = new List<int> { 5, 6, 7 };
int max = FSModule.FindMax(myInts);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |