Учебник Clojure Часть 4 – Использование библиотеки строк


Справка.

https://clojure.org/guides/repl/basic_usage#_example_using_clojure_string

Официальные учебники по Clojure
Строчная часть basic-usage.


Загрузите библиотеку строк и попробуйте использовать верхний регистр.

Снова используйте команду clj для запуска CLI в терминале

( require '[clojure.string])
(clojure.string/upper-case "abCd")
"ABCD"
Войдите в полноэкранный режим Выход из полноэкранного режима

В отличие от вычислений чисел, вам нужно вызвать библиотеку с помощью require
Аналогично использованию Django REST Framework и терминала

Но в отличие от JS и PY, вы не можете использовать одинарные кавычки, например, ‘library/detail’.
Нет единого цитирования. Только начало. Нет конца.
Начинается бесконечная битва, возможно, в этом и заключается смысл.

https://stackoverflow.com/a/34118964

Это было не так, это был просто символ пространства имен.

И импортированная библиотека с require и функциями в ней.
Аргументы обрабатываются так, как если бы они были четырьмя арифметическими операциями. Но всегда найдется один аргумент!


Импортируйте имя библиотеки под псевдонимом с помощью :as

(require '[clojure.string :as customName])
(customName/upper-case "hoge")
"HOGE"
Войдите в полноэкранный режим Выход из полноэкранного режима

Имена библиотек можно импортировать под любым именем, используя :as.
Изменения имен функций не ожидается.


Вызывайте функции напрямую с помощью :refer [function-name].

 

(require '[clojure.string :refer [upper-case]])
(upper-case "toUpperCaseOnly")
"TOUPPERCASEONLY"
Войдите в полноэкранный режим Выход из полноэкранного режима

Используя :refer [function-name], вы можете
Функционирует только в библиотеке
Функции в библиотеке можно использовать как функции (+,-) в четырех арифметических операциях.


Примеры ошибок

 (upper-case "toUpperCaseOnly" "second value" "Third Value")
Execution error (ArityException) at user/eval17 (REPL:1).
Войдите в полноэкранный режим Выход из полноэкранного режима

Несколько аргументов не могут быть обработаны вместе.

(upper-case 'single')
"SINGLE'"
Войдите в полноэкранный режим Выход из полноэкранного режима

В отличие от JS, одинарные кавычки не рассматриваются как строка.
Похож ли он на : (двоеточие) тем, что его нельзя заключить в рамку?


Импортируйте все функции с помощью :refer и :all

(upper-case "quote")
Syntax error compiling at (REPL:1:1).
Unable to resolve symbol: upper-case in this context

user=> (require '[clojure.string :refer :all])
WARNING: reverse already refers to: #'clojure.core/reverse in namespace: user, being replaced by: #'clojure.string/reverse
WARNING: replace already refers to: #'clojure.core/replace in namespace: user, being replaced by: #'clojure.string/replace
nil

user=> (upper-case "quote")
"QUOTE"
Войдите в полноэкранный режим Выход из полноэкранного режима

Можно ли использовать :all для импорта всех функций?
Они уже загружены? Лучше не использовать :all, так как он перезапишет обратную и замещающую части ядра.
Функцию :all не рекомендуется использовать слишком часто, поскольку она перезаписывает функции reverse и replace ядра.


Используйте функцию dir от repl, чтобы вывести все содержимое строковой функции.

(require '[clojure.repl :refer :all])

(dir clojure.string)
blank?
capitalize
ends-with?
escape
includes?
index-of
join
last-index-of
lower-case
re-quote-replacement
replace
replace-first
reverse
split
split-lines
starts-with?
trim
trim-newline
triml
trimr
upper-case
Войдите в полноэкранный режим Выход из полноэкранного режима

Если использовать функцию dir в repl для выстраивания всех функций внутри строки, то можно получить следующие результаты

JS знаком

  • присоединяйтесь к
  • спрайт
  • обратный
  • заменить
  • отделка
  • заканчивается

и так далее.

Кстати, библиотека им.

apropos, find-doc, doc, вы можете искать функции и документы

source join)
(defn ^String join
  "Returns a string of all elements in coll, as returned by (seq coll),
   separated by an optional separator."
  {:added "1.2"}
  ([coll]
     (apply str coll))
  ([separator coll]
     (loop [sb (StringBuilder. (str (first coll)))
            more (next coll)
            sep (str separator)]
       (if more
         (recur (-> sb (.append sep) (.append (str (first more))))
                (next more)
                sep)
         (str sb)))))
Войдите в полноэкранный режим Выход из полноэкранного режима

source можно использовать для просмотра фактического исходного кода функции.
Семейство Lisp, слишком много для исследователей!


Резюме

( require '[clojure.string] )
Войдите в полноэкранный режим Выход из полноэкранного режима

Вы можете импортировать библиотеки таким образом, а затем

( clojure.string/upper-case "abCd" )
Войдите в полноэкранный режим Выход из полноэкранного режима

Указывая имя библиотеки и имя функции в ней
Строка может быть строкой аргументов.

Вы не можете использовать ' "” для строки, только " "“.
Только двойные.

Если вы забыли, какая функция была в строке, вы можете перечислить ее в repl/dir.
Если вы забыли, вы можете использовать repl/dir для вывода списка.

Что такое верхний регистр?
Если вы забыли, что такое верхний регистр, вы можете использовать repl/doc для вывода описания.

Если вы используете repl/source, вы можете даже вывести код реализации.

Основание. Это гораздо удобнее, чем Python для терминальных расчетов.

Оцените статью
Procodings.ru
Добавить комментарий