Clojure. Что такое банан? Чем это отличается от «банана»? - PullRequest
0 голосов
/ 04 августа 2020

Следуйте вместе со мной на Clojure REPL:

(def apos 'banana)  ; "apostropied" banana.
=> #'thic.core/apos
apos
=> banana
(def quo "banana")  ; "quoted" banana.
=> #'thic.core/quo
quo
=> "banana"

Очевидно, банан и «банан» - не одно и то же. Я ПОЛУЧАЮ, что "банан" - это строка, но что такое банан ?

Когда я их набираю, я получаю:

type apos
=> #object[clojure.core$type 0x69085742 "clojure.core$type@69085742"]
=> banana

type quo
=> #object[clojure.core$type 0x69085742 "clojure.core$type@69085742"]
=> "banana"

Итак, банан и " банан "- это тот же ТИП?

Чтобы добавить к моему недоумению, на REPL я получаю следующее:

(type apos)            ; Add a pair of parents.
=> clojure.lang.Symbol ; apos becomes a Symbol.
(type quo)             ; and
=> java.lang.String    ; quo becomes a String.

Что я здесь вижу? банан (без кавычек) - это «символ», а «банан» (в кавычках) - это «строка»? apos - это символ, а quo - это строка?

После многих попыток я все еще зациклен на выборе символа и значения символа. SO 20 век. : -)

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете sh просмотреть этот список источников документации Clojure . В частности, см.

  • Clojure для Brave & True
  • Получение Clojure

Что касается вашего вопроса, 'foo - это символ, состоящий из 3 буквы foo, а "foo" - строка, состоящая из 3 букв foo. Обычно вам не нужно использовать символы в качестве данных в вашем коде, если вы не делаете что-то продвинутое.

Clojure также имеет такие ключевые слова, как :foo. Он состоит из 3 букв foo. Двоеточие действует как кавычка перед символом.

Строка используется так же, как и в других языках. Символ или ключевое слово не могут содержать пробелы, поэтому им не нужны конечные кавычки или двоеточия, и Clojure не использует их для простоты.

Когда вы видите простой символ foo в коде ( без кавычек) он действует как переменная, как в Java, et c.

Строка предназначена для хранения пользовательских данных любого типа. Ключевое слово используется для представления информации управления программой, например :left или :right, вместо числа «magi c», поэтому они похожи на enum в Java.

...