Clojure:找出一个集合是否可以 seq-able

标签 clojure clojureclr

所以有列表?,seq?,向量?, map ?等等以确定参数是什么类型的集合。

什么是区分两者的好方法

  • map (即包含键值对的东西)
  • 一个集合(即包含值的东西)
  • 一个非集合值,如字符串。

  • 有没有比这更好的方法
    #(or (seq? %) (list? %) etc)
    

    最佳答案

    使用 seq?尽可能简洁和干净。

    clojure.contrib.core 定义:

    可排序的?
    功能
    用法:(seqable?x)
    如果 (seq x) 成功则返回真,否则返回假。

    http://clojure.github.com/clojure-contrib/core-api.html

    它做了你提出的一个大or声明

  • 已经是一个序列
  • clojure.lang.Seqable 的一个实例
  • Iterable 的实例
  • 一个数组
  • 一个字符串
  • java.util.Map 的实例
  • 关于Clojure:找出一个集合是否可以 seq-able,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4019249/

    相关文章:

    clojure - 为大量 Clojure 代码切换区分大小写

    Clojure:在结构图中获取单个值和映射

    c# - 是否可以在 Xamarin 中将 Clojure CLR 与 C# 一起使用?

    CLR 上的 Clojure

    namespaces - clojure 关键字什么时候应该出现在命名空间中?

    function - 在多个命名空间中使用记录

    logging - 控制台上未显示 Clojure Web 服务中的基本日志记录

    python - 如何在 Clojure 中实现递归 DFS(不使用向量/堆栈)