diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-02-04 18:29:16 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-02-04 18:29:16 +0000 |
commit | 4ee2a3c25be7bb57375683f3a807fb75ed972ab8 (patch) | |
tree | a2ccdf4bc221d5554d1b9083fe1c6a2c6ca53126 /src | |
parent | 92c7fe2d253ea34ce6d10610c3248a1e321ee673 (diff) |
added get and contains support for strings and arrays, treating as associative, keyed by index, like vectors
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"); } |