在Clojure程序中,我有一个由包含人名和电子邮件的地图组成的数组.
例如
[
{ :name "John" :email "john@gmail.com" }
{ :name "Batman" :email "batman@gmail.com" }
{ :name "John Doe" :email "john@gmail.com" }
]
Run Code Online (Sandbox Code Playgroud)
我想删除重复的条目,为了进行比较,考虑具有相同电子邮件的对等于.在上面的示例中,输出将是:
[
{ :name "John" :email "john@gmail.com" }
{ :name "Batman" :email "batman@gmail.com" }
]
Run Code Online (Sandbox Code Playgroud)
在Clojure中实现这一目标的最佳方法是什么?有没有办法让不同的人知道什么等于使用功能?
谢谢.
当使用Mocha测试异步代码并且我的一个断言失败时,所有Mocha都会报告超时错误.有没有办法改善这个?如何知道断言失败的原因以及原因?
mocha
Contact
#getContacts()
1) should return at least 1 contact
0 passing (3s)
1 failing
1) Contact #getContacts() should return at least 1 contact:
Error: timeout of 3000ms exceeded. Ensure the done() callback is being called in this test.
Run Code Online (Sandbox Code Playgroud)
码:
var assert = require("assert");
var contact = require("../lib/contact.js");
var chai = require('chai');
var should = chai.should();
describe('Contact', function() {
describe('#getContacts()', function() {
it('should return at least 1 contact', function(done) {
contact.getContacts().then(function(contacts) {
assert.equal(4,2)
done()
});
})
})
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Clojure与API(Context.IO)集成.Context.IO使用OAuth 1,它需要通知消费者密钥和消费者秘密凭证以进行集成.
我已经设法使用请求库(https://github.com/request/request)与Context.JS一起使用Context.IO .结果很简单,只是在对象中填充了consumer_key和consumer_secret,并在请求中的oauth参数中传递了它.
var oauth =
{
consumer_key: 'dsfdfssdf',
consumer_secret: 'dasfsafdsf'
};
request.post( { url:url, oauth:oauth } )
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用clj-oauth https://github.com/mattrepl/clj-oauth完成相同的工作,但我有点迷失,因为它需要太多不同的参数(对于更复杂的用例,我猜),而我正在努力想弄清楚如何做到这一点.
要添加更多信息,Context IO仅将OAuth用于API身份验证,而不是用户授权.因此,它不需要通知令牌,也不需要提供令牌.它只需要消费者密钥和签名(这里描述的相同:dev.twitter.com/oauth/overview/creating-signatures).
有人能给出一个类似我在Node中使用Clojure或clj-oauth(或任何其他库)完成的示例吗?我还没有找到办法.
谢谢!
我在Java中有一个算法来评估输入变量,如果它们不是null,它会进行一些处理并将它与地图相关联.例如:
myMap = new HashMap()
if ( a != null )
myMap.put( "a", process( a ) )
if ( b != null )
myMap.put( "b", process( b ) )
Run Code Online (Sandbox Code Playgroud)
考虑到Clojure通常没有状态如何使用它以惯用的方式表达上面的算法?
还有一个信息是,如果变量为null,则不应评估过程函数,因为它会产生空指针异常.所以像assoc-not-nil之类的东西不会这样做:(
谢谢.
我在Clojure中有一个函数,我想在发生异常时返回true,就像下面的代码一样;
(try
(code)
(catch Exception e true)))
Run Code Online (Sandbox Code Playgroud)
但是上面的方法给出了以下错误:
ClassCastException java.lang.Boolean不能强制转换为clojure.lang.IFn signal.message/read?(message.clj:12)
它只适用于放置函数:
(try
(code)
(catch Exception e (= 1 1)))
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在Clojure catch上返回一个值?