Как я могу использовать карту как тип в F #? - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть следующее:

Map [
        "A", new Dictionary<int64, int64 * float>()
        "B", new Dictionary<int64, int64 * float>()
]

, и я хотел бы их словарь, что-то вроде:

let a = 
    new Dictionary<
        string,
        Map [
                "A", new Dictionary<int64, int64 * float>()
                "B", new Dictionary<int64, int64 * float>()
        ]>()

Как получить тип для карты для созданиясловарь

1 Ответ

4 голосов
/ 12 ноября 2019

Не совсем ясно, является ли ваш вопрос о том, как написать тип словаря, который вы хотите, или вы спрашиваете, как создать значение этого типа. Карта является универсальным типом Map<'K, 'V>, очень похожим на тип словаря, поэтому, чтобы написать тип, который вы используете:

Dictionary<string, Map<string, Dictionary<int64, int64 * float>>>

Чтобы создать значение, вы можете написать полный тип, или выможет использовать тот факт, что F # может часто выводить аргументы типа для вас, и поэтому вы можете заменить их на _. Например:

let map = 
  Map [
      "A", new Dictionary<int64, int64 * float>()
      "B", new Dictionary<int64, int64 * float>()
  ]

let a = new Dictionary<_, _>(dict ["first", map])

Я бы также добавил, что словарь карт словарей довольно непонятный тип. Вероятно, было бы неплохо извлечь некоторые из них в простые именованные классы, которые передают некоторое представление о значении типа.

...