summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-12-10 17:06:05 +0000
committerRich Hickey <richhickey@gmail.com>2007-12-10 17:06:05 +0000
commite997be6fcd8fa7f4529de3767e6cd799b6687416 (patch)
tree071e9858579fdc48bb1f48cd9897833c0b7f719a
parente80506c0a027365a557ae0a9262399e11338d68a (diff)
made 3 arg get work with vectors
-rw-r--r--src/jvm/clojure/lang/Associative.java2
-rw-r--r--src/jvm/clojure/lang/IPersistentMap.java1
-rw-r--r--src/jvm/clojure/lang/PersistentVector.java7
-rw-r--r--src/jvm/clojure/lang/RT.java2
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){