小编Ric*_*fer的帖子

Clojure中的自定义相等区别

在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中实现这一目标的最佳方法是什么?有没有办法让不同的人知道什么等于使用功能?

谢谢.

clojure

11
推荐指数
2
解决办法
1455
查看次数

如何在测试异步代码时检查Mocha中的断言错误

当使用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)

mocha.js node.js

8
推荐指数
1
解决办法
4516
查看次数

Clojure中的OAuth1

我正在尝试使用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(或任何其他库)完成的示例吗?我还没有找到办法.

谢谢!

rest oauth clojure

6
推荐指数
1
解决办法
280
查看次数

根据条件结果在地图中累积值的最佳方法

我在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之类的东西不会这样做:(

谢谢.

dictionary clojure

3
推荐指数
1
解决办法
73
查看次数

如何在Clojure try/catch上返回一个值

我在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上返回一个值?

exception-handling clojure

0
推荐指数
1
解决办法
1063
查看次数