clojure - 使用doseq 迭代映射

标签 clojure

我是 Clojure 新手,正在使用 labrepl 做一些基本的工作,现在我想编写一个函数,将某些字母替换为其他字母,例如:eloska → elößkä。

我写的是:

(ns student.dialect (:require [clojure.string :as str]))
(defn germanize
  [sentence]
  (def german-letters {"a" "ä" "u" "ü" "o" "ö" "ss" "ß"})
  (doseq [[original-letter new-letter] german-letters]
    (str/replace sentence original-letter new-letter)))

但它并没有像我预期的那样工作。你能帮我一下吗?

最佳答案

这是我的看法,


(def german-letters {"a" "ä" "u" "ü" "o" "ö" "ss" "ß"})

(defn germanize [s]
  (reduce (fn[sentence [match replacement]]
            (str/replace sentence match replacement)) s german-letters))


(germanize "elosska")

关于clojure - 使用doseq 迭代映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890325/

相关文章:

sql - HugSQL错误: column "date_answer" is of type date but expression is of type character varying?

java - Clojure 中的 IFn 代表什么?

Clojure 头保留在剂量中,运行!循环

clojure - 似乎不需要>!!或 <!!在 Clojurescript 中?

ClojureScript 循环依赖

clojure - 按 UUID 合并 map 列表

clojure - 打印 seq 中每个项目之间的逗号

naming-conventions - clojure 中如何使用 `*var-name*` 命名约定?

sql - 使用 Clojure 连接到 Microsoft SQL Server

Clojure - 加速大文件处理