是否有简单的方法可以忽略不必要的参数?
例如:
(#(+ %1 %2) 1 2)返回3
我想强制这个代码
(#(+ %1 %2) 1 2 3)
Run Code Online (Sandbox Code Playgroud)
也返回3.但它回来了
java.lang.IllegalArgumentException:传递给的args(3)数量错误.
怎么改#(+ %1 %2)?
我希望有一些更优雅的方式#(+ (nth %& 0) (nth %& 1)).
有时你想粘合用不同JVM语言编写的解决方案.为此,您需要调用该语言或以某种方式使用java bitecodes.Clojure中最纯粹,最安全,最好的方法是什么?
例如,从Clojure调用Scala的最佳方法是什么?
(我知道其他方法很容易.你可以通过gen-class生成.class你可以混合使用JVM语言吗?即:Groovy和Clojure,但这只是允许你使用其他语言的clojure.)
很多次,当我尝试编写一些函数时,我得到了异常.这很正常.在Java中,您可以找到异常发生的地点和原因,但在clojure异常文本中只会让我发疯.是否有一些提示如何读取clojure中的异常以及如何查找代码异常发生的位置以及原因?
例如,我将采取一些代码:
(do
(list?)
(list? [])
(list? '(1 2 3))
(list? (defn f [] (do ())))
(list? "a"))
Run Code Online (Sandbox Code Playgroud)
当我在REPL中调用此函数时,我会得到
java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$list-QMARK- (NO_SOURCE_FILE:46)
Run Code Online (Sandbox Code Playgroud)
哪个在二线找不到问题对我帮助不大.在更复杂的代码中,它几乎不会提供任何信息.(当然它会告诉我看一下列表?有些参数错误.)我尝试在REPL中编写代码是不对的?如何在REPL中读取异常消息?有没有办法如何在REPL中获得有关异常的更好信息?
在clojure中,你有几个函数对vector和list有不同的作用.我有两个问题.
1)它有什么用?我相信clojure的创造者有很好的理由去做,但我不知道.
2)无论数据在列表或向量中,如何使这些函数的类型安全变体以相同的方式运行?
定义的函数conj具有以下行为
(conj [1 2 3] 4)
[1 2 3 4]
(conj '(1 2 3) 4)
(4 1 2 3)
Run Code Online (Sandbox Code Playgroud)
我想有一个函数my-conj具有以下行为
(my-conj [1 2 3] 4)
[1 2 3 4]
(my-conj '(1 2 3) 4)
(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
还有其他功能(cons,into,peek,pop)具有相同的行为,因此如果这种结构可以很容易地适应所有这些,那就太好了.
我正在尝试以下列方式定义符号a和b
a + 1 1 b
2
Run Code Online (Sandbox Code Playgroud)
我试图通过使用define-symbol-macro来做到这一点
(define-symbol-macro a '( )
(define-symbol-macro b ') )
Run Code Online (Sandbox Code Playgroud)
但这种方式不起作用.
我想找到更好看的替代代码:
(def x (range 1 10))
(def y '(0 4 3 5 1 2 7 3 11))
(for [i (range 0 (count y))] [(nth x i) (nth y i)])
Run Code Online (Sandbox Code Playgroud)
如果我已经有了之前的结果,我可以简单地说
(def z (for [i (range 0 (count y))] [(nth x i) (nth y i)]))
(for [[x y] z] [x y])
Run Code Online (Sandbox Code Playgroud)
你能找到一些更好看的替代品吗?
示例简短易读.如果您修改它以执行更复杂的操作,则第一个示例可能会停止可读.
我想改变代码的正常行为
(def a 5)
(def b a)
(def a 1)
b
5
Run Code Online (Sandbox Code Playgroud)
为了这个行为
(def a 5)
(*something* b a)
(def a 1)
b
1
Run Code Online (Sandbox Code Playgroud)
它仅用于学习目的,所以请不要在此深思.
我正在尝试通过以下方式在构建的xml中强制执行编码:
XmlWriterSettings xmlSetting = new XmlWriterSettings();
XmlWriter xmlWriter;
Str res;
xmlSetting.encoding ('UTF-8');
xmlWriter = XmlWriter::newXml(xmlSetting);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement('root');
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
xmlWriter.flush();
res = xmlWriter.writeToString();
info(res);
Run Code Online (Sandbox Code Playgroud)
但是,这在我的系统中的结果是:
<?xml version="1.0" encoding="utf-16"?><root />
Run Code Online (Sandbox Code Playgroud)
将编码强制为UTF-8的正确方法是什么?
文档未提供示例:https : //docs.microsoft.com/zh-cn/previous-versions/dynamics/ax-2012/system-classes/gg929065(v%3dax.60)
如何使Clojure的数'()为nil?
例如:如何制作类似的东西
(if '() :true :false)
;to be
:false
;Or easier
(my-fun/macro/namespace/... (if '() :true :false))
:false
Run Code Online (Sandbox Code Playgroud)
而不仅仅是.各方面.
(= nil '()) or (my-something (= nil '()))
true
Run Code Online (Sandbox Code Playgroud)
每个代码都是(='()nil)保存.
(something (+ 1 (if (= nil '()) 1 2)))
2
Run Code Online (Sandbox Code Playgroud)
我在考虑某种自然的表达方式.哪个会看代码并替换'()为nil,但是有些东西(rest '(1))和许多其他东西一样'(),我不知道如何处理它.
有人告诉我,宏可以让你建立自己的语言.我想通过改变clojure来尝试它.所以这很大关于"如何使用clojure以及如何改变它?" 而不是"我真的需要它为我的工作."
谢谢你的帮助.
我有 2 个链接表,它们通过 ID 链接在一起。
其中之一包含专辑列表,第二个是歌曲列表。
我将它们放在具有正确链接类型等的数据源中。
我有一个带有两个网格的表格。第一个显示专辑,第二个显示该专辑中的歌曲列表。如果专辑中有歌曲,一切正常。但如果专辑中没有歌曲,那么第二个网格上有一些值。应该没有显示任何内容。但根据之前点击的专辑和歌曲,有一些错误的信息。
我如何确保如果专辑中没有歌曲,第二个网格将为空或根本不显示?
没有问题: http: //postimg.org/image/e2pvzmbfb
带有不应该存在的数据:http ://postimg.org/image/75xjyh9xt/
表:专辑、歌曲(一首歌曲只能出现在一张专辑中,并且通过专辑 ID 链接到专辑。在歌曲表中,存在关系 Album.AlbumID==Song.AlbumID)
有两个数据源。一个链接相册 (DS_Albums)。第二个链接歌曲 (DS_Songs) 与 JoinSource DS_Albums,链接类型延迟。有两个网格链接到数据源。
我想将变量设置为这样的计算时间
(setf a (time (+ 1 1)))
Run Code Online (Sandbox Code Playgroud)
但不是时间我得到这个
Break 1 [7]> a
2
Run Code Online (Sandbox Code Playgroud)
如何设置计算时间?