小编Ste*_*gle的帖子

不能在clojurescript repl中"使用"

我在Clojurescript命名空间键入以下内容.

cljs.user> (use '[clojure.zip :only [insert-child]])

WARNING: Use of undeclared Var cljs.user/use at line 1 
"Error evaluating:" (use (quote [clojure.zip :only [insert-child]])) :as "cljs.user.use.call(null,cljs.core.vec([\"\\uFDD1'clojure.zip\",\"\\uFDD0'only\",cljs.core.vec([\"\\uFDD1'insert-child\"])]));\n"
#<TypeError: Cannot call method 'call' of undefined>
TypeError: Cannot call method 'call' of undefined
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:1:85)
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:6:3)
    at http://localhost:3000/main.js:32728:142
    at evaluate_javascript (http://localhost:3000/main.js:32741:4)
    at Object.callback (http://localhost:3000/main.js:32806:138)
    at goog.messaging.AbstractChannel.deliver (http://localhost:3000/main.js:31059:13)
    at goog.net.xpc.CrossPageChannel.deliver_ (http://localhost:3000/main.js:32164:14)
    at Function.goog.net.xpc.NativeMessagingTransport.messageReceived_ (http://localhost:3000/main.js:31732:13)
    at goog.events.Listener.handleEvent (http://localhost:3000/main.js:22590:26)
    at Object.goog.events.fireListener (http://localhost:3000/main.js:22924:21)
nil
Run Code Online (Sandbox Code Playgroud)

似乎在说明cljs.user命名空间中不存在'use'方法.这种方式对我来说很有意义,因为Clojurescript本身无法评估Clojure表达式.但是,我知道Clojurescript有一个clojure.zip命名空间,我在命名空间声明中使用了clojure.zip (:use [clojure.zip :only …

clojure clojurescript

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

Clojure中是否存在惰性变量?

我有一些计算有点昂贵(启动数据库),我只想创建数据库,如果我真的要使用它.我正在寻找一个引用变量(或只是一个普通的变量,如果可能的话),它只会在它被使用(或解除引用)的情况下评估它的值.概念上像以下一样的东西.

(def v (lazy-var (fn [] (do (println "REALLY EXPENSIVE FUNCTION") true))))
Run Code Online (Sandbox Code Playgroud)

而且在将来,当我要么使用var v,或者调用@v时,我会打印出"真正昂贵的功能",并且从那里v的值为true.这里重要的是fn直到变量被引用(de)才被评估.在需要时,该函数仅被评估一次以计算变量的值.在clojure中这可能吗?

variables clojure lazy-evaluation

13
推荐指数
2
解决办法
2060
查看次数

ctrl-x o向后(与其他窗口相对)?

CTRL-x o - 将光标切换到其他窗口

我希望有能力扭转这种control-x o局面.像control-x p这样的东西确切地做了什么control-x o,但倒退.这个请求的原因是我经常打开两个代码,一个缓冲打开,这是一个repl.我经常不得不穿过其中一个缓冲区来到另一个缓冲区,这很烦人.

假设我打开了3个缓冲区(A,B,C),并且我在缓冲区B上.缓冲区按字母顺序排列control-x o.当我想去A时,我想按control-x p,而不是必须按control-x o两次.

感谢任何帮助,谢谢.

emacs

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

如何处理Clojurescript宏中所需的Clojurescript代码?

我们假设我有一个X.clojurescript和一个X.clojure命名空间.X.clojurescript中的所有内容都是Clojurescript代码,X.clojure中的所有内容都是Clojure代码.不幸的是,我不能直接在Clojurescript中定义宏,我必须在Clojure中定义它们,然后使用它们将它们带入Clojurescript命名空间

(ns X.clojurescript.abc
  (:require-macros [X.clojure.def :as clj]))
Run Code Online (Sandbox Code Playgroud)

这可以.但是,如果宏(在X.clojure中定义)需要引用Clojurescript命名空间(X.clojurescript)中定义的内容,该怎么办?问题是Clojure编译器在解析其他命名空间时不会查看我的Clojurescript命名空间(单独的目录).

我通过简单地在我的Clojure代码中创建一个命名空间来解决这个问题,该命名空间具有与Clojurescript中相同的命名空间和所需的定义,但这看起来有点愚蠢.所以,举例来说,如果我需要X.clojurescript.abc.y在我的宏,我只是将创建Clojure的一侧DEFS一个伪Y在X.clojurescript.abc我Clojure的版本额外的命名空间; 有点愚蠢.

我如何处理需要在Clojurescript方面引用某些内容的宏?

macros clojure clojurescript

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

如何在Clojure中编译Clojurescript表单?

我正在使用clj-webdriver在Clojurescript Web应用程序上进行一些基于Selenium的测试.有时,应用程序本身中有一些东西,我希望在测试运行时能够摆弄它.我看到clj-webdriver有一些调用(execute-script js args)它需要一串Javascript代码并在当前测试浏览器上运行它.我测试了这个,它似乎工作.我想传递clojurescript代码execute-script.我需要一些能将我的Clojure表单编译成Clojurescript代码的东西.

我看到以下问题与此有关.它说要使用离合器的js/emit功能.我搜索了离合器,发现它只在cljs-views.clj中的(视图)中提到过我在repl中尝试了以下内容:

user> (use 'com.ashafa.clutch.cljs-views)  
  nil  
user> view 
  <core$comp$fn__4034 clojure.core$comp$fn__4034@ebd3f80> 
user> js/emit 
  CompilerException java.lang.RuntimeException: No such namespace: js, #compiling (NO_SOURCE_PATH:1)   
user>
Run Code Online (Sandbox Code Playgroud)

这不是特别令人惊讶,js如何成为常规的clojure namesapce?但是如何使用这个(或任何其他)系统生成我可以传递给的Clojurescript(javascript)代码execute-script

clojure clojurescript

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

是否有ruby的命令行框架?

那么,有web框架,有GUI框架,我只是想知道是否有ruby的控制台/命令行框架?

具体来说,我希望能够:

  1. 有一个特定的视图,其中我可以选项卡到不同的输入段.就像你可以在网页上使用表单一样.
  2. 我想通常的控制台快捷方式工作(ctr-k,ctr-a,ctr-e等)
  3. 如果光标位于某个输入位置,有时我希望它响应单个按键事件,而不是我必须输入文本然后按回车键.

不必是一个统一的框架.但我注意到在ruby中编写控制台应用程序似乎有些麻烦.是否有任何工具可以使这更容易?

ruby terminal console

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

我该如何处理Google App Engine中的循环导入?

如果我有"a.py"

from google.appengine.ext import db
class A(db.Model):
    db.ReferenceProperty(b.B)
    ...other stuff
Run Code Online (Sandbox Code Playgroud)

和另一个文件"b.py"

from google.appengine.ext import db
class B(db.Model):
    db.ReferenceProperty(a.A)
    ...other stuff
Run Code Online (Sandbox Code Playgroud)

看起来Python根本不允许循环依赖.通常我猜你会改变代码,这样两个类实际上可以解决自己而不直接相互导入.也许通过第三中间人来巩固他们对彼此的引用?但我不能只使用普通的中间类,因为所有类最终都需要持久保存到数据库中?是否有任何正确的解决方案来构造上述代码,使其有效?

我有一种感觉,我会得到很多"糟糕的代码","解耦","糟糕的设计"等评论.所以我想问一下,如果你这么说,请说明你用一个实际的例子做什么.有没有任何解决方案可以让参考,类和模块保持原样?

谢谢.

python google-app-engine

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

在生产中获取Clojurescript repl/connect以不编译?

在我的clojurescript代码中,我有以下内容:

(defn onload [] (repl/connect "http://localhost:9000/repl"))

(set! (.-onload js/window) onload)
Run Code Online (Sandbox Code Playgroud)

Clojurescript repl在开发中非常有用,但我在制作过程中将它留在代码中犹豫不决.在开发(简单编译)期间使用上述代码的最简洁方法是什么,但在生产(高级编译)期间不存在?

clojure clojurescript

9
推荐指数
2
解决办法
574
查看次数

获取Clojure参数列表

我想要的东西给了我传递给函数的实际值的序列,类似于javascript函数中的参数值.

我知道我可以使用获取整个函数参数列表

(defn fx [& args]
 args)

<= (fx {:a 1} 2)
=> ({:a 1} 2)
Run Code Online (Sandbox Code Playgroud)

但这消除了我的功能上的arity.我希望有类似的东西

(defn fx [{:keys [a]} b]
 (MAGIC_FUNCTION_THAT_RETURNS_THE_ARGS_VALUES))

<= (fx {:a 1} 2)
=> ({:a 1} 2)
Run Code Online (Sandbox Code Playgroud)

是否有可能获得传递给函数的原始值序列?

clojure

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

如何保证 Dart 中的某个命名构造函数?

假设我有具体的类 Cat、Dog 和 Parrot,以及以下接口:

class HasGuid {
  HasGuid.fromId(String id);
}
Run Code Online (Sandbox Code Playgroud)

我的目标是保证 Cat、Dog 和 Parrot 都有一个fromId命名构造函数。所以,我可以拨打这样的电话:

Cat.fromId("Whiskers") =returns> [A Future<Cat> object with id "Whiskers"]
Dog.fromId("Fido")     =returns> [A Future<Dog> object with id "Fido"]
Parrot.fromId("Polly") =returns> [A Future<Parrot> object with id "Poly"]
Run Code Online (Sandbox Code Playgroud)

fromId正在通过网络进行呼叫,因此我将其作为Future. 我基本上想要一份合同,规定任何混合/扩展/实现/任何类的HasGuid类都将具有fromId. fromId类中的位置T将接受一个身份字符串并返回一个Future<T>.

dart

8
推荐指数
2
解决办法
4060
查看次数