Map<String, List<String>>我的代码中有一个,如果map的#get()方法返回一个空列表而不是null ,我会避免使用潜在的空指针.java API中有这样的东西吗?我应该延长HashMap吗?
我已经尝试将我的clojure图表嵌入到UML中可用的内容中,使用类块作为文件级命名空间和依赖关系链接来显示关系,但它很尴尬并且往往会阻碍功能模式.我也尝试过开发ad-hoc解决方案,但是我发现一个解决方案和Java一样好用Java(简单有向图似乎工作模糊,但结果不详细足够).此外,我在网上找不到任何关于此的内容.
为了清楚起见,我并没有尝试像代码生成那样做任何事情; 我只是为了自己的利益而谈论纸笔图.我假设我不是第一个考虑使用lisp语言的人.
提出了哪些解决方案?有没有常用的标准?您有什么推荐的吗?你用什么工具?
我无法弄清楚为什么JCF(Java Collection Framework)没有Bag实现(允许重复而不维护顺序).Bag性能比JCF中的当前Collection实现要好得多.
为什么Java Collections框架没有提供这样的直接实现?
目前,每次我在emacs中打开文本文件时,我都必须M-x longlines-mode打开我的换行.同样在clojure中,我必须M-x paredit-mode(尽管它确实自动将主要模式设置为文本和clojure).
我对主要和次要模式之间的差异感到朦胧,但我认为上述模式很小.有办法:
paredit-mode?longlines-mode.我已尝试添加-^- mode: longlines -^-或-^- mode: longlines-mode -^-在其他线程中建议,但它似乎不起作用.我无法搜索有关-^-语法的文档,因为我不知道它的名称.我还没弄清楚是什么导致它,但我想知道是否有任何影响错误(警告?)消息"尝试释放未引用的标量:SV 0x825b790在全局销毁期间".对于未经训练的人来说,似乎由于编译器不愿意检测到问题,因此它没有继续并重新删除未引用的内存.
这只是告诉我我的编程很草率吗?或者是否存在我应该关注的真正问题?
背景:这不是我的代码,我没有时间去追捕问题,我应该注意到它正在程序结束时发生.
这不是我的"生产代码",而是为了说明目的而简化问题.此外,这个问题的标题是误导性的,因为它让人想起〜@扩展,我理解,这可能不一定是问题.如果可以,请建议更好的问题标题.
给定一个具有以下形式的宏:
(defmacro my-add [x & ys] `(+ ~x ~@ys))
Run Code Online (Sandbox Code Playgroud)
现在让我们说我们有一个清单:
(def my-lst '(2 3))
Run Code Online (Sandbox Code Playgroud)
现在我想要一个使用my-add的函数,我可以将my-lst传递给arg,即
(call-my-add 1 my-lst)
Run Code Online (Sandbox Code Playgroud)
我以一种看似明显的方式定义函数:
(defn call-my-add [x ys]
(apply my-add (cons x ys)))
Run Code Online (Sandbox Code Playgroud)
但:
java.lang.Exception: Can't take value of a macro: #'user/call-my-add (repl-1:60)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种各样的狂野技巧来使用call-my-add函数来使用evals,apply,甚至将call-my-add定义为宏,但它们都提供类似的ClassCastExceptions.
这有什么办法吗?