summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/RT.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index adf62580..8521e0f8 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -380,6 +380,12 @@ static public Object get(Object coll, Object key){
Map m = (Map) coll;
return m.get(key);
}
+ else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray()))
+ {
+ int n = ((Number) key).intValue();
+ return nth(coll, n);
+ }
+
throw new UnsupportedOperationException("get not supported on this type");
}
@@ -395,6 +401,11 @@ static public Object get(Object coll, Object key, Object notFound){
return m.get(key);
return notFound;
}
+ else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray()))
+ {
+ int n = ((Number) key).intValue();
+ return n >= 0 && n < count(coll) ? nth(coll, n) : notFound;
+ }
throw new UnsupportedOperationException("get not supported on this type");
}
@@ -414,6 +425,12 @@ static public Object contains(Object coll, Object key){
Map m = (Map) coll;
return m.containsKey(key) ? T : F;
}
+ else if(key instanceof Number && (coll instanceof String || coll.getClass().isArray()))
+ {
+ int n = ((Number) key).intValue();
+ return n >= 0 && n < count(coll);
+ }
+
throw new UnsupportedOperationException("contains not supported on this type");
}