我有命名空间foo和bar. 两者都有功能hello。
我正在尝试编写一个基于参数调用foo/hello或 的函数。bar/hello换句话说:
(defn say-hello [target-namespace]
(if (= target-namespace "foo")
(foo/hello)
(bar/hello)
Run Code Online (Sandbox Code Playgroud)
类似的事情,只是假设有 15 个命名空间,所以简单的 if-else 是不够的。最好以某种方式利用target-namespace并找出从中调用的函数。有没有好的方法可以做到这一点?
我正在 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 中创建流畅的界面?
我在 clojure 中的即时时间为“2016-08-03T18:45:00.000-00:00”。我想将其转换为仅日期(“2016-08-03”)。我该怎么做呢。
我的实际日期格式为“2016-08-03T18:45:00Z”。我使用 (c/to-date (f/parse "2016-08-03T18:45:00Z")) 将其转换为即时。如何仅获取日期?
谢谢
我正在使用带有Figwheel的苹果酒,要启动苹果酒,我使用cider-jack-in-clj&cljs并选择figwheel
我可以看到 clj cider 启动,然后是 cljs,但 cljs cider 无法连接到 emacs。但是,我可以将我的应用程序连接到 cljs cider,但 emacs 无法连接到 cljs cider。
我的苹果酒版本,0.21
[苹果酒/背负式“0.3.10”]
[figwheel-sidecar“0.5.16”]
任何帮助将不胜感激?
在 React 中动态渲染组件是其使用的基础。这很容易做到,如下所示:
render() {
return (
<div className="blocks_loop">
{this.props.blocks.map(block => (
<div className="block" />
))}
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,您将获得尽可能多的 div blocks。我试图用试剂来实现同样的目的,我在这篇文章中记录了其中的一部分。有例子出来的人做喜欢有这样一个,但他们似乎都包括的使用lists,我不希望使用-它只是不适合我的目的。我只想要和我放入的物品一样多的组件。
我现在有这段代码试图遵循下面的答案,这意味着为my-map. 没有呈现任何内容并引发错误react-dom.development.js:507 Warning: Functions are not valid as a React child.:
(ns mapping-test.views
(:require
[re-frame.core :as re-frame]
[mapping-test.subs :as subs]))
(defn main-panel []
(def my-map {:a 1 :b 2 :c 3})
(defn a-component []
[:h1 "This is a component rendering"])
(defn my-loop [my-map]
(for [value my-map] …Run Code Online (Sandbox Code Playgroud) 在 clojure 中,给定一个数据结构,[{:a "foo" :b "bar"} {:a "biz" :b "baz"}]我将如何获得[{:b "bar"}{:b "baz"}]最简洁的信息?
我是 Clojure 的新手,一切都很新,但也很有趣。所以我有这个数据:
{:test {:title "Some Title"}, :questions [
{:id 1, :full-question {:question "Foo question", :id 1, :answers [{:id 7, :question_id 1, :answer "Foobar answer"}, {:id 8, :question_id 1, :answer "Foobar answer two"}]}},
{:id 5, :full-question {:question "Foo question", :id 5, :answers [{:id 12, :question_id 5, :answer "Foobar answer"}]}},
{:id 9, :full-question {:question "Foo question", :id 9, :answers [{:id 14, :question_id 9, :answer "Foobar answer"}, {:id 20, :question_id 9, :answer "Foobar answer two"}]}}
]}
Run Code Online (Sandbox Code Playgroud)
“经典”测试->问题->回答类型的数据结构。我有这个新信息:
(def new-answer {:id …Run Code Online (Sandbox Code Playgroud) 对我来说,一个新的 Clojurian,当涉及到参数顺序/位置时,一些核心函数似乎相当违反直觉和令人困惑,这是一个例子:
> (nthrest (range 10) 5)
=> (5 6 7 8 9)
> (take-last 5 (range 10))
=> (5 6 7 8 9)
Run Code Online (Sandbox Code Playgroud)
也许它背后有一些我还没有看到的规则/逻辑?
我拒绝相信 Clojure 核心团队做出了如此多出色的技术决策,却忘记了函数命名/参数排序的一致性。
还是我应该记住它的原样?
谢谢
有点题外话:
rand& rand-intVS random-sample- 另一个例子,函数命名似乎不一致,但这是一个很少使用的函数,所以没什么大不了的。
我正在尝试使用特定的 JavaScript 框架,该框架需要扩展基类以将其用于应用程序。
基本上我想按照惯用的 ClojureScript 执行以下操作。
class Foo extends Bar {
constructor() { super("data") }
method1(args) { /* do stuff */ }
}
Run Code Online (Sandbox Code Playgroud)
我试过
(defn foo
[]
(reify
js/Bar
(constructor [this] (super this "data"))
(method1 [this args] )))
Run Code Online (Sandbox Code Playgroud)
如果我从 Object 创建一个新类,这会起作用,但正如shadow-cljs正确抱怨的那样,“Symbol js/Bar 不是协议”。另外,我不想添加方法,而是创建一个继承某些方法并重载其他方法的子类。
我想过使用proxy,但“未定义核心/代理”。
当然,我可以创建的实例Bar和set!新方法,但感觉就像放弃和使用质量较低的语言。
我一直在尝试编写一个脚本,该脚本创建一个包含 20 个字母的随机字母数字并将其附加到链接的末尾。我坚持制作字母数字。任何帮助,将不胜感激!
clojurescript ×10
clojure ×9
lisp ×2
cider ×1
clojure-core ×1
clojurescript-javascript-interop ×1
reagent ×1