【问题标题】:Working with a java structure in clojure在 clojure 中使用 java 结构
【发布时间】:2016-12-31 10:15:00
【问题描述】:

我有一个 such things 的 java.util.Collections$UnmodifiableList:

(.getGuilds bot)

我如何迭代它,在每个上面调用一个方法 getName 并制作另一个所有名称的列表。

【问题讨论】:

    标签: java oop clojure lisp


    【解决方案1】:

    如果我理解正确,您唯一需要做的就是简单地映射列表并获取名称。由于java.util.Collections$UnmodifiableList 是可迭代的,clojure 会将其视为可排序的集合。一个简单的例子:

    user> (import java.util.Collections)
    java.util.Collections
    
    user> (def files (Collections/unmodifiableList
                      [(java.io.File. "aaa") (java.io.File. "bbb")]))
    #'user/files
    
    user> (map #(.getName %) files)
    ("aaa" "bbb")
    

    所以,在你的情况下应该是这样的:

    (map #(.getName %) (.getGuilds bot))
    

    【讨论】:

    • 你也可以用(memfn getName)代替#(.getName %)
    • @SamEstep 据我所知 memfn 是历史文物,不应使用。
    • @nha 你为什么这么认为?
    • 不是我找到它的来源,但请参阅此线程中的评论:objectcommando.com/blog/2010/05/17/… 以及那里的 Stu 评论:dev.clojure.org/jira/browse/CLJ-337
    • @nha 有趣,谢谢!我不知道memfn 已被弃用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多