clojure - Clojure 中的类型提示 nil 文字

标签 clojure null type-hinting

当传递的参数是文字nil时,如何对函数调用的参数进行类型提示?我遇到了一种情况,我试图用多个单参数构造函数代理 Java 类,例如:

public class MyClass {
  public MyClass(String a) {...}
  public MyClass(List b) {...}
}

我想调用为我的代理采用字符串参数的构造函数,但为该参数传递一个空值。只需调用:

(proxy [MyClass] [nil] ...)

抛出异常,因为 Clojure 找到多个构造函数,但不知道调用哪一个。但尝试添加类型提示,如下所示:

(proxy [MyClass] [^String nil] ...)

抛出异常并显示消息“元数据只能应用于 IMetas”。很公平 - 当阅读 nil 文字时,读者没有任何东西可以附加元数据。那么我该如何解决这个问题呢?我能够想出一个涉及 let 的解决方案,但它看起来相当笨拙:

(let [NIL! nil]
  (proxy [MyClass] [^String NIL!] ...))

有更好的方法吗?

最佳答案

遗憾的是没有,

我不知道还有什么更好的办法。有时我在函数中进行 proxy 调用,然后调用它,尽管这相当于您使用 let

关于clojure - Clojure 中的类型提示 nil 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845555/

相关文章:

python - 实例化一个 TypeVar 类型

面向 Clojure 用户的 Java

Java Sql 更新语句。处理引号中的 Null

string - 在 Clojure 中,将带有前导 0 的数字传递给 str 会导致奇怪的行为。这是什么特点?

null - 为什么在设置值并检查它是否为空后,智能转换为可空值失败?

scala - scala 中 null 的相等性,odersky 书的解释似乎与 scala 代码不同?

php - 可迭代对象和数组类型提示?

python - 如何处理 "Incompatible return value type (got overloaded function)"问题

java - 在 Eclipse 中导出单个 .jar 时避免重复库 .jars

emacs - pretty-print 和扩展