首页 > 解决方案 > clojure 中的地图给出了意想不到的结果

问题描述

在clojure中使用map,检查字符串是否包含大写字符。

(map #(= (clojure.string/upper-case %) %) "Hello") 

预期的结果。

(true false false false false)

不幸的是,结果出乎意料。

(false false false false false)

我在第一个“%”中替换“H”时做了一个实验,结果还是出乎意料。

(map #(= (clojure.string/upper-case "H") %) "Hello") 

(false false false false false)

当我在第二个“%”中替换“H”时,结果发生了变化,这是一个预期的结果。

(map #(= (clojure.string/upper-case %) "H) "Hello") 

(true false false false false)

那有什么问题?请随意发表评论。

标签: dictionaryclojure

解决方案


正如其他人指出的那样,将字符与字符串进行比较是行不通的。比较字符串将起作用:

(map #(= (clojure.string/upper-case %) (str %)) "Hello")
=> (true false false false false)

然而,这是更直接的:

(map #(Character/isUpperCase %) "Hello")
=> (true false false false false)

推荐阅读