标签: clojurescript

在不同的命名空间中调用相同的函数

我有命名空间foobar. 两者都有功能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并找出从中调用的函数。有没有好的方法可以做到这一点?

clojure clojurescript

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

ClojureScript 中的流畅界面

我正在 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 clojurescript

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

如何在 Clojure 中将即时时间转换为日期

我在 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")) 将其转换为即时。如何仅获取日期?

谢谢

clojure clojurescript

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

无法在 emacs 中的 Cider 内启动Figwheel REPL

我正在使用带有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”]

任何帮助将不胜感激?

clojure cider clojurescript

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

在试剂中动态渲染组件的正确方法是什么?

在 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 clojurescript reagent

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

如何从clojure中的向量中的一系列映射中删除给定的键?

在 clojure 中,给定一个数据结构,[{:a "foo" :b "bar"} {:a "biz" :b "baz"}]我将如何获得[{:b "bar"}{:b "baz"}]最简洁的信息?

lisp clojure clojurescript

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

Clojure。更新双重嵌套值

我是 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)

clojure clojurescript

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

Clojure 核心函数参数位置似乎相当混乱。它背后的逻辑是什么?

对我来说,一个新的 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- 另一个例子,函数命名似乎不一致,但这是一个很少使用的函数,所以没什么大不了的。

lisp clojure clojurescript clojure-core

1
推荐指数
2
解决办法
116
查看次数

Clojurscript:扩展一个 Javascript 类

我正在尝试使用特定的 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,但“未定义核心/代理”。

当然,我可以创建的实例Barset!新方法,但感觉就像放弃和使用质量较低的语言。

clojurescript clojurescript-javascript-interop

1
推荐指数
2
解决办法
503
查看次数

如何在 clojure 中生成随机字母数字字符串?

我一直在尝试编写一个脚本,该脚本创建一个包含 20 个字母的随机字母数字并将其附加到链接的末尾。我坚持制作字母数字。任何帮助,将不胜感激!

clojure clojurescript

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