簡體   English   中英

如何在 Clojure 中使用 Remove

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM