在Clojure中,有什么比较用户输入字符串和Longs的好方法?

时间:2011-10-16 09:59:02

标签: string types clojure

在Clojure中我正在建立一个纸牌游戏。卡片有西装和分数。

{:suit 1 :score 9}

使用范围创建卡片,例如(range suitTotal),所以类的值为:suit和:score为Long。 玩家发送命令字符串,例如“discard1.9”是一个丢弃请求。 使用正则表达式来解析这个:

(re-seq #"[0-9]+" command)

导致字符串项“1”和“9”。使用这些结果创建的卡片将是

{:suit "1" :score "9"}

我希望这与原卡相同。目前我正在使用(Integer / parseInt)转换字符串。

套装值可以使用其他类型构建,例如关键字,但分数值会在其他地方用作数字。

2 个答案:

答案 0 :(得分:4)

使用read-string

<强>样本

user=> (read-string "1")
1

答案 1 :(得分:3)

一种好方法是将字符串解析为数字,然后使用=进行比较。

user=> (Integer/parseInt "1")
1

这比读取字符串的优点是更受限制。这不会解析看起来像clojure数据结构的字符串。