【发布时间】:2014-05-29 23:18:09
【问题描述】:
这可能是显而易见的事情,但我的头在这里撞到了墙上......
我有一个价值:
dailyCandleMap : Map<DayOfWeek, List<TimeSpan * TimeSpan> option>
我确保了一周中每一天的密钥都存在,因此我应该能够安全地使用 Map.find 检索给定日期的List<TimeSpan * TimeSpan> option。我尝试了以下方法:
let candlesForMonday = Map.find(DayOfWeek.Monday, dailyCandleMap)
但是将鼠标悬停在 candlesForMonday 的类型上,编译器告诉我它是
(Map<(DayOfWeek * Map<DayOfWeek, List<TimeSpan * TimeSpan> option>), obj> -> obj)
这到底是什么意思?鉴于 Map.find 的签名是'Key -> Map<'Key,'T> -> 'T,这怎么可能?
编辑:当我更多地玩这个时,我发现它与咖喱表单/部分应用程序以及我调用该函数的方式有关。这样做会给我预期的结果:
let candlesForMonday = Map.find DayOfWeek.Monday dailyCandleMap
仍然非常感谢有人帮助澄清上一个错误示例的真正原因,因为生成的类型签名伤害了我的大脑。
【问题讨论】:
标签: f#