В чем разница между объектно-подобной картой и коллекционно-подобной картой в clojure? - PullRequest
0 голосов
/ 13 декабря 2018

В соответствии с стандартами кода Clojure , существует соглашение, которое должно идти первым, клавишей или картой при выборе элемента на карте.Но стандарты делают различие в зависимости от того, является ли карта «объектной картой» или «коллекционной картой».

Использование синтаксиса первого ключевого слова для доступа к свойствам объектов: (: свойство object-like-map)

Использование синтаксиса первого начала для извлечения значений из коллекции (или использование getесли коллекция может быть ноль).(ключ коллекции, подобной карте) (получить ключ коллекции, подобной карте)

Как определить «объект-подобная карта» и «коллекция-подобный-карта» и как ониотличается?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я бы сказал, что объектоподобная карта - это инкапсуляция состояния или тип данных более высокого уровня, где имя, число и типы полей определяются заранее.

(def rectangle {:length 7, :width 12, :color "#0000FF"})

В этом случае вполне естественно получить доступ по ключевому слову (:length rectangle).

Моя идея карт типа коллекции состоит в том, что они, как правило, представляют собой однородные коллекции, где вы не делаете этого.знать номер или точно, какие ключи будут присутствовать.Представьте себе карту с подсчетом появлений жанров в музыкальной коллекции ({:kpop 19, :smooth-jazz 7, :classic-rock 134, ...})

(def genre-count (count-genres "/data/my-song-list"))

Тогда, по крайней мере, согласно руководству по стилю, естественно получить количество слов с помощью

(genre-count :punk)

больше чем (:punk genre-count),

0 голосов
/ 13 декабря 2018

Я бы сказал, что набор, подобный map, представляет собой набор ключей и значений, в которых ключи не обязательно являются ключевыми словами, и поэтому использование ключа в качестве функции для извлечения значения не подходит:

(:keyword my-map)

В этом случае используйте get:

(get my-map keyword)

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

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