【问题标题】:Expand an seq into individual scalars将 seq 扩展为单个标量
【发布时间】:2011-06-29 18:08:22
【问题描述】:

我想将 map 生成的惰性序列的成员作为单独的参数提供给另一个函数。是否有拼接(惰性)序列的函数?

【问题讨论】:

    标签: map clojure seq


    【解决方案1】:

    使用apply

    (defn f [a b c d e]
      (str "a = " a " b = " b " c = " c " d = " d " e = " e))
    
    (println (apply f (range 5)))
    
    ;; prints: a = 0 b = 1 c = 2 d = 3 e = 4
    

    如您所见,函数 f 接受 5 个参数并且(范围 5)返回 5 个参数的惰性序列。

    只要确保 seq 的大小与函数预期的参数数量相同,否则运行时会出现异常。

    【讨论】:

    • 毕竟这么简单。我正在尝试将(双关语)我的神经元应用到消化函数式编程中,但不断发现自己在思考肮脏的程序技巧。谢谢。
    • 顺便说一下,如果你想在聚会上提到这一点,Leonel 给你看的术语是“解构”。
    • 我认为解构与对数据结构进行切片并为范围内的各个字段创建绑定有关,而不仅仅是为参数分配名称。
    • 对不起,你是对的。当我读到这个例子时,我想到了别的东西。
    • +1 是一个很好的例子。另外值得注意的是, apply 将强制在原始问题的上下文中评估整个惰性序列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多