如果您使用类型byte
作为索引,它也会返回nil,这不仅限于short
。
这种情况发生的原因是,Clojure中PersistentVector类的源文件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中的默认整数类型)。