我正在尝试编写一个 F# 类型,它包装了一个基础集合,Map<int64, customType>
以便我可以向其中添加项目:
type public CandleContainer (seedCandles:System.Collections.Generic.IEnumerable<Candle>) =
let candles : Map<int64, Candle> =
seedCandles
|> Seq.map (fun x -> x.Start.Ticks, x)
|> Map.ofSeq
let candleInterval = TimeSpan.FromMinutes(1.0)
member public x.AddCandle (candle:Candle) =
candles = candles.Add(candle.Start.Ticks, candle)
member public x.GetList () : List<Candle> =
candles
|> Map.toSeq
|> Seq.map (fun (key, value) -> value)
|> Seq.toList
我遇到的问题出在 AddCandle 方法中。我知道 Map.Add 返回一个带有添加值的新地图,编译器并没有抱怨我试图覆盖蜡烛的值。但是,每当我尝试使用此方法添加新蜡烛时,x.GetList 都会返回一个空列表。有没有办法用 Map.Add 的结果覆盖蜡烛的旧值?还是我只是将蜡烛设置为可变值并覆盖它?