Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在clojure中测试密钥是否为UUID_Clojure_Uuid_Midje - Fatal编程技术网

如何在clojure中测试密钥是否为UUID

如何在clojure中测试密钥是否为UUID,clojure,uuid,midje,Clojure,Uuid,Midje,我试图检查关键字是否是UUID。它应该是这样的(不起作用): 还有什么其他的测试方法 使用Midje 1.9 请注意,:70342332-7f99-417a-b864-9006de62ae05不是UUID,而是关键字。更一般地说,一个关键字在Clojure中是一个关键字,而不是别的,不管字符串是什么样子 实现所需功能的一种方法是获取关键字的名称,然后将此字符串作为UUID显式读取: user=> (uuid? (read-string (str "#uuid \"" (name :7034

我试图检查关键字是否是UUID。它应该是这样的(不起作用):

还有什么其他的测试方法


使用Midje 1.9

请注意,
:70342332-7f99-417a-b864-9006de62ae05
不是UUID,而是关键字。更一般地说,一个关键字在Clojure中是一个关键字,而不是别的,不管字符串是什么样子

实现所需功能的一种方法是获取关键字的
名称
,然后将此字符串作为UUID显式读取:

user=> (uuid? (read-string (str "#uuid \"" (name :70342332-7f99-417a-b864-9006de62ae05) "\"")))
true

然后,您可以使用这种方法。

一种干净的归档方式是:

(defn keyword->uuid [kw]
     (try
      (java.util.UUID/fromString (name kw))
     (catch Exception e nil)))
如果关键字可转换为uuid对象,它将被转换并返回(请注意,任何非null返回值都为true,因此您可以将此函数用作转换器和测试)。否则,结果将为零:

user=> (keyword->uuid :dasdsa)
nil
user=> (keyword->uuid :70342332-7f99-417a-b864-9006de62ae05)
#uuid "70342332-7f99-417a-b864-9006de62ae05"

我认为构建一个字符串的往返过程,然后由读取器使用标记函数读取该字符串,这有点浪费,而且不明显。我宁愿直接使用
java.util.UUID/fromString
user=> (keyword->uuid :dasdsa)
nil
user=> (keyword->uuid :70342332-7f99-417a-b864-9006de62ae05)
#uuid "70342332-7f99-417a-b864-9006de62ae05"