У меня такой тип:
type Model = {Ships: map<Mmsi, Ship>}
type Ship = {Latitude: float Longitude: float Speed: float Heading: float}
Я пытаюсь найти способ добавить на карту корабля через тип сообщения
type msg = {Latitude: float Longitude: float Mmsi = int Time = string}
Используя эту функцию:
let update (msg : Msg) (currentModel : Model) : Model =
// TODO: implement the new model based on the received message here
let currentModel =
{
Ships = Map.Add(msg.Mmsi, msgToShip msg)
}
currentModel
Однако я получаю сообщение об ошибке от компилятора как такового: «Конструктор метода или объекта« Добавить »не является статическим.
У меня нет особого опыта в f # или функциональном программировании в целом, поэтому любые указатели на это будут очень благодарны.





Add с заглавной буквы - это метод экземпляра для типа Map<_, _>. add в нижнем регистре - это функция в модуле Map. Итак, вы хотели здесь назвать:
Ships = Map.add msg.Mmsi (msgToShip msg) currentModel.Ships
Или, также верно, но менее идиоматично:
Ships = currentModel.Ships.Add(msg.Mmsi, msgToShip msg)
Спасибо за ответ!