【发布时间】:2016-05-10 12:20:19
【问题描述】:
我有四个通过公共 ID(递增整数)关联的数据源。
一个数据源 P 始终可用,而其他三个 L 可能对给定 ID 可用,也可能不可用(即不保证 ID 存在),并且通过 Internet 接收并通过以下方式区分他们的 IP 地址。
我在一段时间内收集数据源,然后我想使用他们的 ID 加入它们。
我的心智模型是这样的
- 来自
P区间P: List<'T>的数据 - 来自所有
L来源的数据:L: List<Dictionary<string, 'U>> - 从源
Pa: 'T -> int获取ID - 从
L源b: 'U -> int获取ID - 合并数据的结果类型
'V = {Id: int; P: 'T; L: Dictionary<string, 'U> } - 结果
R: List<'V>
在我使用哈希集和诸如此类的东西运行 amok 之前,最好能获得一些关于如何做到这一点的想法。也许有一些很酷的 F# 功能可以让这变得非常简单。
【问题讨论】:
-
这个问题并不完全清楚 - 您写道 Ls 可能对给定 ID 可用,但您从 L 获取 ID 的调用由
'U键入? -
@AntonSchwaighofer 是的,来自
L源的数据都属于同一类型,'U,并假定包含 ID。a和b从数据类型'T和'U中提取 ID。 -
如果我假设您的意思是
a: int -> 'T,并且相应地对于b,我宁愿将其建模为{ Id: int; P: 'T; L: Map<string,'U option>}。我不明白您为什么需要字典列表? -
@AntonSchwaighofer 你是对的。结果类型中的字典列表是错误的。该列表位于
R中。更新了 Q。
标签: f#