Python的KeyError的惯用Clojure版本是什么?

3

这个Python应该如何表达

gl_enums = ... # map from name to values for opengl enums
# use with gl_enums["enum name"]

在Clojure中?这样做可以,但是是否正确呢?

(def gl-enums ...) ; map from name to values for opengl enums
(defn gl-enum [k] (or (gl-enums k) (throw (SomeException.))))
; use with (gl-enum :enum-name)

编辑:为了澄清,这个问题是关于抛出异常的部分,而不是定义映射的部分。


1
我认为你的例子是最符合惯用语的Clojure。 - Arthur Ulfeldt
2个回答

4

-1

只需使用普通的哈希映射表:

(def gl-enums {:name1 "value1", :name2 "value2",
               :name3 "value3", ...})

如果您不想提供关键字(如:keyword),而是更喜欢字符串,那么您需要在gl-enum中使用(get gl-enums str)


1
什么?我认为这个问题是在问如果一个映射表中没有条目,如何最好地抛出异常。 - andrew cooke
@andrewcooke:是的。是的,没错。 - amara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接