[英]How to Use Remove in Clojure
(ns untitled1.core
(:require [clojure.string :as str]))
(defn foo
[half full]
;Assume full = I am a taco
;Assume half = taco
(remove full half)
這是我收到的消息:“在 clojure.core/complement$fn (core.clj:1441) 處打印返回值時出錯 (ClassCastException)。類 clojure.lang.LazySeq 不能轉換為類 clojure.lang.IFn (clojure. lang.LazySeq 和 clojure.lang.IFn 位於加載程序‘app’的未命名模塊中)”
我要(刪除整半)返回 -> 我是
我是 Clojure 的新手,所以我可以想象 (remove) 可能是錯誤的功能。 如果有人能引導我朝着正確的方向前進,我將不勝感激。
查看remove
函數的文檔,您會發現,正如您所懷疑的,這不是您要查找的函數https://clojuredocs.org/clojure.core/remove (您還會看到它的第一個參數是一個函數,它解釋了您看到的錯誤消息)
為此,我將使用clojure.string/replace
(在這種情況下,用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 "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.