在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)转换字符串。
套装值可以使用其他类型构建,例如关键字,但分数值会在其他地方用作数字。
答案 0 :(得分:4)
使用read-string
<强>样本强>
user=> (read-string "1")
1
答案 1 :(得分:3)
一种好方法是将字符串解析为数字,然后使用=进行比较。
user=> (Integer/parseInt "1")
1
这比读取字符串的优点是更受限制。这不会解析看起来像clojure数据结构的字符串。