clojure是否支持按返回类型重载方法?
当我偶然发现时,我正在读一些风暴代码。它们的名称和参数都相同,但返回类型似乎不同。稍微简化的代码是:clojure是否支持按返回类型重载方法?,clojure,overloading,Clojure,Overloading,当我偶然发现时,我正在读一些风暴代码。它们的名称和参数都相同,但返回类型似乎不同。稍微简化的代码是: (defn- foo "Returns list of sets of things" [^Bar xs] (->> ... (map set))) (defn- foo "Returns mutable set of sets of things" [^Bar xs] (->> ... (map set) (H
(defn- foo "Returns list of sets of things"
[^Bar xs]
(->> ...
(map set)))
(defn- foo "Returns mutable set of sets of things"
[^Bar xs]
(->> ...
(map set)
(HashSet.)
))
有人能解释一下这里发生了什么吗 第二个定义覆盖了第一个定义。Clojure不关心类型。第二个定义覆盖了第一个定义。Clojure不喜欢类型。Hmmm,想知道为什么这样写:所以[对我来说]作者不太可能忘记删除前一个。@om nom nom,我不知道原作者的意图,但我可以告诉你发生了什么。:]@在基于REPL的开发中,这种事情很容易被忽视。你可以随心所欲地重新定义变量,编译器不会发出任何警告,所以一旦你写了第二个版本,很容易忘记第一个版本。嗯,想知道为什么这样写:所以[对我来说]作者不太可能忘记删除前一个。@om nom nom,我不知道原作者的意图,但我可以告诉你发生了什么@在基于REPL的开发中,这种事情很容易被忽视。你可以将变量重新定义到你的心里,编译器不会发出任何警告,所以一旦你写了第二个版本,你很容易忘记第一个版本已经存在。