字符串可以直接编制索引,而不需要从那里构建一个序列并采用该序列的第一个。通过该java代码
(= (nth "clojure" 0) \c)
=> true
第n个呼叫:
static public Object nth(Object coll, int n){
if(coll instanceof Indexed)
return ((Indexed) coll).nth(n); <-------
return nthFrom(Util.ret1(coll, coll = null), n);
}
,能有效地直接读取字符。通过该java代码
第一呼叫:
static public Object first(Object x){
if(x instanceof ISeq)
return ((ISeq) x).first();
ISeq seq = seq(x); <----- (1)
if(seq == null)
return null;
return seq.first(); <------ (2)
}
它建立一个SEQ对字符串(1)(构建SEQ是非常快),然后从该SEQ采取的第一项(2)。返回后seq是垃圾。
Seqs显然访问任何Clojure中的顺序最idomatic的方式,我不敲他们。了解您在创建什么时很有趣。将您拨打first
的所有电话转接至nth
可能是过早优化的情况。如果你想在字符串中的字符100我会建议使用索引访问功能就像在短第n
:不出汗的小东西:)
我喜欢Clojure的是,它不需要隐藏Java,所以+1。 – ponzao 2010-10-19 19:04:49