Filter F#使用“设置”过滤贴图关键帧以获得缩小的贴图
关于F#和使用贴图和集合过滤带有关键点的贴图,我有一个问题。 我已经尝试过几种方法,但我无法理解它在F中的工作原理,需要一些关于如何在F中编写所需代码的建议 这是我迄今为止尝试过的代码,只返回set head=key的第一个实例:Filter F#使用“设置”过滤贴图关键帧以获得缩小的贴图,filter,f#,set,maps,key,Filter,F#,Set,Maps,Key,关于F#和使用贴图和集合过滤带有关键点的贴图,我有一个问题。 我已经尝试过几种方法,但我无法理解它在F中的工作原理,需要一些关于如何在F中编写所需代码的建议 这是我迄今为止尝试过的代码,只返回set head=key的第一个实例: let rec sumECTS cs cb = Map.filter(fun key desc -> key = (cs |> Seq.head)) cb ;; 其中cs=课程集: let courseSet = set [ cn1 ; cn3 ; c
let rec sumECTS cs cb =
Map.filter(fun key desc -> key = (cs |> Seq.head)) cb
;;
其中cs=课程集:
let courseSet = set [ cn1 ; cn3 ; cn6 ];;
cn#是一个5位数的courseNo
Cb=课程库:
let Coursebase1 =
Map.empty.
Add(cn1,cd1).
Add(cn2,cd2).
Add(cn3,cd3).
Add(cn4,cd4).
Add(cn5,cd5).
Add(cn6,cd6);;
其中cd#是两位数的ECTS点。可能是沿着这些线的某个东西(示例结果为66)
非常不清楚你到底想做什么。我想你应该试着去做-
让sumECTS cs=Map.filter(fun key->Set.contains key cs)
@FoggyFinder你应该做出正确的回答。这是最明显的答案,考虑到这个问题,这是有道理的。
open System
let sumEcts courseSet courseBase =
let isPartOfCourseSet cn _ =
courseSet |> Set.contains cn
courseBase
|> Map.filter isPartOfCourseSet
|> Map.toSeq
|> Seq.map (fun(cn, cd)->cd)
|> Seq.sum
let courseBase =
[
(11111, 11)
(22222, 22)
(33333, 33)
(44444, 44)
(55555, 55)
]
|> Map.ofList
let courseSet =
[11111; 22222; 33333 ]
|> Set.ofList
courseBase
|> sumEcts courseSet
|> Console.WriteLine