Горячая объявить пустую карту / словарь? - PullRequest
0 голосов
/ 07 января 2019

Я хотел бы инициализировать рекурсивную функцию с помощью Map. Чтобы объявить доступный только для чтения словарь со значением, мы можем сделать:

let dictionary1  = dict [ (1, "a"); (2, "b"); (3, "c") ]       

Попробуйте онлайн!

Теперь я хотел бы создать пустой словарь. Как этого добиться?

Я ищу что-то вроде:

let dictionary1 = {} // <- ok this is js
let (stuff, dictionary2) = parseRec("whatever", dictionary1)

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Вы можете сделать:

let dictionary1  = dict []

for elem in dictionary1 do
   printfn "Key: %d Value: %s" elem.Key elem.Value

и это дает вам пустой словарь.

Использование printfn показывает механизму логического вывода правильные типы ключа и значения.

Если вы хотите быть явным, вы можете указать типы несколькими способами:

let dictionary1 = dict Seq.empty<int * string>
let dictionary1 = dict ([] : (int * string) list)
let dictionary1 = dict [] : System.Collections.Generic.IDictionary<int, string>
let dictionary1 : System.Collections.Generic.IDictionary<int, string> = dict []
0 голосов
/ 07 января 2019

Поскольку вы запрашиваете карту / словарь, здесь есть два других решения для Карта :

let dictionary1 : Map<int, string> = Map.empty
let dictionary1 = Map<int, string> []

источник

0 голосов
/ 07 января 2019

Так как карта .NET Dictionary, вы можете сделать

let dictionary1 = new System.Collections.Generic.Dictionary<int, string>()

Я не знаю, есть ли лучший способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...