Как использовать Удалить в Clojure - PullRequest
0 голосов
/ 07 марта 2020
(ns untitled1.core
(:require [clojure.string :as str]))

(defn foo

[half full] 

;Assume full = I am a taco
;Assume half = taco

(remove full half)

Это сообщение, которое я получаю: «Ошибка печати возвращаемого значения (ClassCastException) в clojure.core /plement $ fn (core.clj: 1441). Класс clojure.lang.LazySeq не может быть приведен к классу clojure. lang.IFn (clojure.lang.LazySeq и clojure.lang.IFn находятся в безымянном модуле загрузчика 'app') "

Я хочу (удалить полную половину) для возврата -> Я

Я новичок в Clojure, поэтому могу себе представить, что (удалить) может быть неправильной функцией. Если кто-нибудь может привести меня в правильном направлении, я буду признателен.

1 Ответ

1 голос
/ 07 марта 2020

Посмотрите документацию по функции remove, и вы увидите, как вы подозревали, что это не та функция, которую вы искали https://clojuredocs.org/clojure.core/remove (вы также увидите, что она первая Аргументом является функция, которая объясняет сообщение об ошибке, которое вы видите)

Для этого я бы использовал clojure.string/replace (замена чего-либо ничем - это то же самое, что и удаление в этом случае). Например:

user> (def full "I am a taco")
#'user/fulluser> 
user> (def half "taco")
#'user/half
user> (clojure.string/replace full half "")
"I am a "

как функция

(ns untitled1.core
  (:require [clojure.string :as str]))

(defn foo
  [full half]
  (str/replace full half ""))

, вызывающая функцию:

untitled1.core> (foo "I am a taco" "taco")
"I am a "
...