使用类型 byte
作为索引时也会返回 nil,而不仅仅是 short
。
这种情况发生的原因是,在 Clojure 源文件 APersistentVector.java 中的方法 valAt
中,用于在 Clojure 的 PersistentVector 类中查找值,调用了包 clojure.lang.Util 中的方法 isInteger 来确定索引是否为整型类型。该方法如果其参数是 java.lang.Integer、java.lang.Long、clojure.lang.BigInt 或 java.math.BigInteger 的实例,则返回 true,对于其他类型返回 false。
我不知道这是否被视为错误,或者更可能是,这是一种在高温代码路径中快速处理最常见情况(java.lang.Long 是 Clojure 中的默认整型)的设计决策。