killme2008 / aviatorscript

A high performance scripting language hosted on the JVM.
http://fnil.net/aviator/
4.66k stars 853 forks source link

关于seq.some(seq, fun)返回值的讨论 #147

Closed zengxiaowengit closed 5 years ago

zengxiaowengit commented 5 years ago

在Wiki里,该函数的描述是 ,返回 true 或 false。当集合里的只要有一个元素调用 fun 后返回 true 的时候,整个调用结果立即为 true,否则为 false。 在源码(version 4.2.0)里,我看到返回的是返回null或者是返回匹配的第一个元素。 能改了和文档一致吗? 谢谢!

      if (Collection.class.isAssignableFrom(clazz)) {
        Iterator var7 = ((Collection)first).iterator();

        while(var7.hasNext()) {
          Object obj = var7.next();
          if (fun.call(env, new AviatorRuntimeJavaType(obj)).booleanValue(env)) {
            return new AviatorRuntimeJavaType(obj);
          }
        }
      }
killme2008 commented 5 years ago

这个是文档错误,不过在 aviator 里,除了 nil 和 false 之外,都是 true

zengxiaowengit commented 5 years ago

我们就是在集合里面放了nil,所以发现了这个问题。严谨一点的话我觉得文档描述的会更好一些。虽然大部分情况是一致的。

killme2008 commented 5 years ago

已修正文档,感谢