我的理解是现在建议使用
require :refer而不是use在ns宏中使用.例如,执行:
(ns example.core
(:require [clj-json.core :refer [parse-string]]))
Run Code Online (Sandbox Code Playgroud)
代替
(ns example.core
(:use [clj-json.core :only [parse-string]]))
Run Code Online (Sandbox Code Playgroud)
处理:rename哪些use支持的推荐方法是什么?具体来说,假设我想require
clojure.data.zip和重命名ancestors以及descendants功能与clojure.core冲突.
换句话说,我想知道require等效的
(:use
[clojure.data.zip :rename {ancestors xml-ancestors,
descendants xml-descendants})
Run Code Online (Sandbox Code Playgroud) 我正在为我的应用程序评估HTTP客户端库.这是一个Web应用程序,它调用各种Web服务,聚合内容,然后将其发送到Ajax客户端.我想我需要一个异步客户端,因为我想在我等待Web服务的长响应时释放我的应用服务器(Tomcat)线程,这样Tomcat可以重复使用这个线程来做其他事情,而我正在做IO来定位Web服务.
我找到了3个图书馆
想知道这个库如何比较.
我可以看到Sonotype客户端可以使用可插入的提供程序进行http处理,包括Apache Http Client 3.x. 如果我直接使用Apache Http 4.x客户端而不是通过Sonotype客户端,我不会看到我失去了什么.
我想使用RxJS与同步世界"桥接"事件的异步世界.具体来说,我想创建一个函数,该函数返回在某个时间间隔内收集的事件数组.
我可以创建Observable来做我想要的
var source = Rx.Observable
.interval(100 /* ms */)
.bufferWithTime(1000).take(1)
Run Code Online (Sandbox Code Playgroud)
我可以打印正确的值
var subscription = source.subscribe(
function (x) {
console.log('Next: ' + JSON.stringify(x));
},
function () {
console.log('Completed');
});
Run Code Online (Sandbox Code Playgroud)
这打印
[0,1,2,3,4,5,6,7,8]
Completed
Run Code Online (Sandbox Code Playgroud)
但我想要的是将此数组赋值给变量.从概念上讲,我想要的东西
var collectedDuringSecond = source.toPromise.getValue()
这个想法是getValue会阻塞所以在上面的行完成之后collectDuringSecond将包含[0,1,2,3,4,5,6,7,8]
我很少被Groovy正则表达式行为所迷惑.
"dog" == /dog/ - return true
"dog" == /^dog/ - return false
Run Code Online (Sandbox Code Playgroud)
我理解^匹配行的开头,所以第二个表达式也应该返回true.
我实际上要做的是在行的开头使用替换"#"
line = line.replace(/^#/, '')
Run Code Online (Sandbox Code Playgroud)
但"#"不会被删除