diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 17 |
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"); } |