编写以下函数的惯用方式是什么?
(split-first #"." "abc.def.ghi") ;;=>["abc", "def.ghi"]
(split-last #"." "abc.def.ghi") ;;=>["abc.def", "ghi"]
Run Code Online (Sandbox Code Playgroud)
有一个明显的(丑陋的?)解决方案使用split,但我确信有更优雅的解决方案?也许使用 regexes/indexOf/split-with ?
我在开发环境中使用了Vagrant+ virtualBox和Debian 8//Ubuntuimage.
我想使用nix进行配置,但我不能nixOS完全正确地工作(即使用网络,配置......),但我非常乐意切换.所以我正在回归nix + Debian 8或nix + Ubuntu模仿生产服务器.
我不能完全得到之间的区别user packages和system packages,什么是最好的使用在我的情况下,为了能够重新使用到生产服务器.
我应该使用nix -i或编辑configuration.nix文件来安装软件包吗?
我对以下表达式的行为差异感到困惑:
(pr (meta ^{:a 0} (list 1 2))) ;; prints nil returns nil
(pr (meta ^{:a 0} '(1 2)));; prints {:line 110, :column 20} returns nil
(pr (meta ^{:a 0} (range 1 3))) ;; prints nil returns nil
(pr (meta ^{:a 0} [1 2])) ;; prints {:a 0} returns nil
Run Code Online (Sandbox Code Playgroud)
这是使用clojure 1.8.0.我欢迎解释为什么结果不同.
我正在scala中迈出第一步,这里是一个"hello world"代码:
package test
object Main {
def main(args: Array[String]): Unit = {
println("Blabla something : " + 3)
println("Blabla something : " , 3)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
Blabla something : 3
(Blabla something : ,3)
Run Code Online (Sandbox Code Playgroud)
为什么在第二行打印括号以及","?我期待与第一行相同的输出.
注意:我尝试搜索 scala println括号等等,但我得到的是关于如何从代码中删除括号的帖子,而不是从输出中删除.
我正在 ClojureScript 中创建一个库,它将公开一个公共 JavaScript API。由于它必须模仿现有 JavaScript 库的 API,因此我想提供相同类型的流畅 API:
myLib.prepareToDo()
.something()
.and('also')
.somethingElse()
.run(function(err, result) {
console.log("yay!");
});
Run Code Online (Sandbox Code Playgroud)
在 Javascript 中,我们可以创建一个流畅的 API,就像这个站点点):
var MyClass = function(a) {
this.a = a;
}
MyClass.prototype.foo = function(b) {
// Do some complex work
this.a += Math.cos(b);
return this;
}
Run Code Online (Sandbox Code Playgroud)
然后我可以这样称呼它:
var obj = new MyClass(5);
obj.foo(1).foo(2).foo(3);
Run Code Online (Sandbox Code Playgroud)
现在,据我所知,thisClojureScript 中没有 的概念,尽管显然可以访问它this-as。
我不知道如何使用它,因此我的问题。
如何在 ClojureScript 中创建流畅的界面?
我想在我的ClojureScript构建中使用figwheel.
它lein cljsbuild auto已经合作,但我必须把它:optimisations :whitespace.
否则我在浏览器中收到一条消息:
Uncaught ReferenceError: goog is not defined
Run Code Online (Sandbox Code Playgroud)
然而,figwheel需要:optimisations :none运行.这是我的leiningen文件的一部分:
:cljsbuild {
:builds
[{:id "dev"
:source-paths ["src/cljs"]
:figwheel { :websocket-host "localhost"
;;:on-jsload "example.core/fig-reload"
:autoload true
:heads-up-display true
:load-warninged-code true
;;:url-rewriter "example.core/fig-url-rewrite"
}
:compiler {;; :main
:output-to "resources/public/js/gdb/gdb.js"
:output-dir "resources/public/js/gdb/cljsbuild-dev"
;;:asset-path "js/out"
:optimizations :none
:source-map "resources/public/js/gdb/gdb.js.map"
:pretty-print true}}]}
Run Code Online (Sandbox Code Playgroud)
我缺少什么来获取缺少的依赖项?
是否有一个Emacs包用于移动Lisp(特别是Clojure)S表达式?
注意:我一直在看S-Expressions之间如何移动光标,但这不是我想要的.我想移动表达式:
我正在寻找类似的东西:
(a-fn 1 2 3)
'(another-thing 2 3 4)
?cursor here
Run Code Online (Sandbox Code Playgroud)
然后,如果我做"swap-sexp"的"移动sexp-up"之类的事情,结果应该是:
?cursor here
'(another-thing 2 3 4)
(a-fn 1 2 3)
Run Code Online (Sandbox Code Playgroud) 我有一个Clojure初学者问题,为什么以下代码不起作用:
(defn aFun [n]
(if (< -10 n 10)
((println "Single digit" n) "A return value")
((println "More digits" n) "Another return value")))
Run Code Online (Sandbox Code Playgroud)
我NullPointerException在运行时得到了.为什么?
这个功能有效:
(defn aFun [n]
(if (< -10 n 10)
"A return value"
"Another return value"))
Run Code Online (Sandbox Code Playgroud)
还有这个:
(defn aFun [n]
(if (< -10 n 10)
(println "Single digit" n)
(println "More digits" n)))
Run Code Online (Sandbox Code Playgroud)
我想同时做两件事:(计算和)返回一个值,同时首先打印一些东西.我确信这是非常基本的(甚至不确定如何标题我的问题),但我无法得到我做错的事.
我想在Clojure中将变量的名称作为字符串.但是,与此问题不同,我会得到原始绑定的名称(不确定术语是否正确,所以请参阅下面的示例).
(def sample-data1 {:data 1})
(def sample-data2 {:data 2})
(def sample-data3 {:data 3})
(doseq
[my-var [sample-data1 sample-data2 sample-data3]]
(println (name 'my-var)))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,而不是打印
my-var
my-var
my-var
Run Code Online (Sandbox Code Playgroud)
我想拥有 :
sample-data1
sample-data2
sample-data3
Run Code Online (Sandbox Code Playgroud)
我怎么在Clojure中做到这一点?
注意:这可能不是真正的应用程序中最漂亮的事情.但我的问题是,如果这是可能的.
澄清一下:这是为了进行原型设计.在这个特定的情况下,而不是打印我填充(postgres)数据库与假数据,我手工编写变量,我想跟踪我的变量最终没有编写太多代码.
我正在尝试使用ansible 包在ubuntu 16.04上安装特定版本的RethinkDB.
我用 :
- name: Ensure rethinkDB package repository is present
apt_repository: repo='deb http://download.rethinkdb.com/apt xenial main' state=present
tags:
- rethinkdb
- name: install RethinkDB
package: name=rethinkdb-2.3.2 state=latest
tags:
- rethinkdb
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
任务[安装RethinkDB]*******************************************************任务路径:/Users/nha/.../playbook.yml:173致命:[机器]:失败!=> {"已更改":false,"failed":true,"msg":"没有包匹配'rethinkdb-2.3.2'可用"}}重试,使用: - limit @ ops/ansible/playbook.retry
即使不考虑版本,我也会收到错误:
任务[安装RethinkDB]*******************************************************任务路径:/Users/nha/.../playbook.yml:173致命:[机器]:失败!=> { "cache_update_time":0, "cache_updated":假的, "改变":假的, "失败":真正的 "味精": "'在/ usr/bin中/ apt-get的-y -o \" DPKG ::选项:: = - force-confdef \" - o \"Dpkg :: Options :: = - force-confold \"install'rethinkdb''失败:E:有未经身份验证的包,-y没有使用 - 允许,未经认证\n"'标准错误’:'E:有未经验证的软件包和-y不--allow-未经验证\n’,'标准输出使用了’:"读取软件包列表... \nBuilding依赖关系树.. \nReading状态信息... \n以下额外的软件包将被安装:\n libcurl3 \n以下新的软件包将被安装:\n libcurl3 rethinkdb\N0升级,新安装2,0删除和0不升级\nNeed得到11.2 …