diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-12-10 17:06:05 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-12-10 17:06:05 +0000 |
commit | e997be6fcd8fa7f4529de3767e6cd799b6687416 (patch) | |
tree | 071e9858579fdc48bb1f48cd9897833c0b7f719a | |
parent | e80506c0a027365a557ae0a9262399e11338d68a (diff) |
made 3 arg get work with vectors
-rw-r--r-- | src/jvm/clojure/lang/Associative.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/IPersistentMap.java | 1 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentVector.java | 7 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 2 |
4 files changed, 8 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/Associative.java b/src/jvm/clojure/lang/Associative.java index 486fae4d..b881e78f 100644 --- a/src/jvm/clojure/lang/Associative.java +++ b/src/jvm/clojure/lang/Associative.java @@ -17,4 +17,6 @@ IMapEntry entryAt(Object key); Associative assoc(Object key, Object val);
Object valAt(Object key);
+
+Object valAt(Object key, Object notFound);
}
diff --git a/src/jvm/clojure/lang/IPersistentMap.java b/src/jvm/clojure/lang/IPersistentMap.java index 4a7e2d48..555ca1a0 100644 --- a/src/jvm/clojure/lang/IPersistentMap.java +++ b/src/jvm/clojure/lang/IPersistentMap.java @@ -20,5 +20,4 @@ IPersistentMap assocEx(Object key, Object val) throws Exception; IPersistentMap without(Object key);
-Object valAt(Object key, Object notFound);
}
diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java index 5896bdad..8d7c6172 100644 --- a/src/jvm/clojure/lang/PersistentVector.java +++ b/src/jvm/clojure/lang/PersistentVector.java @@ -378,16 +378,19 @@ public PersistentVector assoc(Object key, Object val){ throw new IllegalAccessError("Key must be integer"); } -public Object valAt(Object key){ +public Object valAt(Object key, Object notFound){ if(key instanceof Number) { int i = ((Number) key).intValue(); if(i >= 0 && i < count()) return nth(i); } - return null; + return notFound; } +public Object valAt(Object key){ + return valAt(key, null); +} // java.util.Collection implementation public Object[] toArray(){ diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index d5464f65..1e5fb9a6 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -322,7 +322,7 @@ static public Object get(Object coll, Object key){ static public Object get(Object coll, Object key, Object notFound){ if(coll == null) return notFound; - return ((IPersistentMap) coll).valAt(key, notFound); + return ((Associative) coll).valAt(key, notFound); } static public Associative assoc(Object coll, Object key, Object val){ |