Map<int64, customType>
アイテムを追加できるように、基になるコレクションをラップする F# 型を作成しようとしています。
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 を使用して新しい Candle を追加しようとすると、空のリストが返されます。Map.Add の結果でろうそくの古い値を上書きする方法はありますか? それとも、ろうそくを変更可能な値にして上書きするだけですか?