2

这是区别:

clj> (get 42 :anything) ; => nil
cljs> (get 42 :anything) ; =>  Error: No protocol method ILookup.-lookup defined for type number: 42

我不知道这是 ClojureScript 中的错误还是未记录的差异,或者我只是遗漏了一些东西。

4

3 回答 3

5

我是 ClojureScript 开发人员之一。get应该接受任何东西,ClojureScript 的当前行为是一个错误。

于 2013-04-03T15:09:48.753 回答
4

您在get这里误用了-您的意思是也提供地图参数吗?

例如,

cljs> (get {} 42 :anything)
;=> :anything

在 Clojure / ClojureScript 中,get假设第一个参数有一个映射:

clj> (doc get)
-------------------------
clojure.core/get
([map key] [map key not-found])
  Returns the value mapped to key, not-found or nil if key not present.
nil

由于底层实现如此不同,我希望看到未记录的函数使用(在这种情况下,提供数字而不是映射)导致不同的行为。

于 2013-04-02T13:13:56.187 回答
1

中的功能get与中的clojure.core功能不同getcljs.core

clojure 函数在 map 上工作(如果你不传递 map,它会返回第三个参数,如果你不传递第三个参数,则返回 nil),clojurescript 函数适用于任何具有 ILookup 协议实现的类型

于 2013-04-02T15:38:41.537 回答