gpt4 book ai didi

clojure - 如何在原始类型上调度多方法?

转载 作者:行者123 更新时间:2023-12-04 08:36:39 25 4
gpt4 key购买 nike

我希望我的程序在原始类型及其包装类之间表现不同,例如:

(defmulti try-type class)

(defmethod try-type Integer [arg]
(println "Integer"))

(defmethod try-type Integer/TYPE [arg]
(println "int"))

但它不起作用,虽然我尝试 Integer 和 int 两者
user=> (try-type (.intValue (int 2)))
Integer
nil
user=> (try-type (int 2))
Integer
nil

那么,是否可以在原始类型上调度多方法?

======编辑======

我正在将 google guava 包装到 clojure 中。其中有一个原始库,例如 bool 值、Dobules、Ints 等。它们有一些共同的方法,所以我想尝试多方法。

最佳答案

不,目前不可能。函数(例如多方法调度函数)的 arg 要么是 Object(因此原语将被装箱)或原语 long/double(因此 Objects 将被拆箱)。您的方案需要一个函数,该函数可以采用其中一个并在函数内部保留该区别。

也就是说,无论您要解决的实际问题是什么,都可能有解决方案。

关于clojure - 如何在原始类型上调度多方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11702865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com