我正在尝试在我的Clojure程序中获取控制台输入,但是当它到达程序的那一部分时它给了我这个错误.
Exception in thread "main" java.lang.ClassCastException:
clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader
Run Code Online (Sandbox Code Playgroud)
'read'功能有效,但它不是我需要的.这是我正在使用的代码.
(defn prompt-read [prompt]
(print (format "%s: " prompt))
(flush )
(read-line))
Run Code Online (Sandbox Code Playgroud)
编辑:
这显然只是我正在使用的版本.它是当前的Programming Clojure示例代码中包含的版本,我将测试当前的发行版本并查看是否存在问题.
我正在研究一个我分叉的存储库,其中作者采用了脏路径,并在初始提交中将所有依赖项填充到lib /目录中.通常,如果它不是初始提交,我只会做一个交互式rebase并删除整个提交(如果这就是他所做的全部).但是,我不知道如何编辑/删除初始提交.有没有办法可以编辑初始提交并删除lib目录而不触及其余部分?
编辑
我在这里偶然发现了答案:我可以从Git仓库中删除最初的提交吗?在选定的答案中.这就是我没有更彻底地搜索的结果.
我注意到一些像clojure-twitter这样的库使用特殊的vars(那些用于动态绑定的用星号包围)用于oauth身份验证.您将身份验证保存在var中,然后使用(with-oauth myauth ..).我认为这是解决此类问题的一个非常好的解决方案,因为您可以为应用程序的每个用户重新绑定auth var.
我在一个我写过的电子邮件客户端中采取了类似的路线.我有一个特殊的var命名会话,我使用当前用户的会话和用户信息绑定到一个地图,并且有各种重要的函数使用来自该var的信息.我写了一个宏,with-session暂时在传递给with-session的一组表单的上下文中重新绑定它.事实证明这是一个非常干净的解决方案(对我来说).
所以,我的问题是这样的:我是否'做'它'?这是一个糟糕的设计决定,还是这个特殊变量的预期用法之一?
我和一位朋友最近在我的Clojure IRC机器人中实现了链接抓取.当它看到一个链接时,它会淹没页面并从页面中抓取标题.问题是它必须啜饮整个页面才能获取链接.
如何在第一个页面之前懒洋洋地阅读页面 </title>?
我很清楚这段代码太可怕了.我刚刚做到了所以我可以尝试不同的Swing东西.这是一个有趣的问题.这创建了4个按钮,用于添加,减去,分割和相乘.乘法和加法完美地工作,完全没有问题,但是当用户试图减去它时总是返回0.当用户试图除以它时,总是返回1或1.0,具体取决于输入.我无法弄清楚.这是代码:
(ns rayne.main
(:gen-class)
(:import (javax.swing JFrame JTextField JButton JOptionPane)
(java.awt.event ActionListener)
(java.awt GridLayout)))
(def numbers (ref []))
(def times-clicked (ref 0))
(defn calc [nseq op]
(let [n1 (first nseq)
n2 (last nseq)]
(cond
(= op "+") (+ n1 n2)
(= op "*") (* n1 n2)
(= op "-") (- n2 n1)
(= op "/") (/ n1 n2))))
(defn add-op-button [op text button]
(.addActionListener button
(proxy [ActionListener] []
(actionPerformed [e]
(dosync
(ref-set times-clicked (inc @times-clicked))
(if (= @times-clicked 2)
(do …Run Code Online (Sandbox Code Playgroud) 我不太确定如何说出这个帖子的名字,所以如果你能澄清它,请这样做.
我的示例代码是这样的:
(doseq [x [1 2 3] y [3 2 1]] (println (str x y)))
Run Code Online (Sandbox Code Playgroud)
该代码的输出是:
13
12
11
23
22
21
33
32
31
nil
Run Code Online (Sandbox Code Playgroud)
我理解列表理解和doseq都是这样评价的.有没有另一种方法可以做到这一点,所以不是x的1个元素用于y的每个元素,依此类推,x的1个元素与y的1个元素一起使用,依此类推,因此输出将是:
13
22
31
Run Code Online (Sandbox Code Playgroud)
对不起,如果我没有说明这一点,我似乎无法正确地说出来.
编辑:我认为你可以在Haskell中使用列表推导和语言扩展来做到这一点.ParallelListComps之类的东西.
如何在另一个<div>中水平居中<div>?我设法从接受的答案中使用样式水平居中.我怎样才能将它垂直居中?内部div的高度未知.
如果我不知道sleepjava.lang.Thread 上的方法是静态的,我怎么能找到?
我过去曾经涉足过Haskell,最近又认真地回到了它,我正在阅读真实的世界.他们已经发光的一些例子,我还没有理解.在这一个:
myLength [] = 0
myLength (x:xs) = 1 + myLength (xs)
Run Code Online (Sandbox Code Playgroud)
我不知道这是如何工作的,真正添加的是什么?递归如何返回可以添加的内容?我不明白.
在这里我们有这个:
splitLines [] = []
splitLines cs =
let (pre, suf) = break isLineTerminator cs
in pre : case suf of
('\r':'\n':rest) -> splitLines rest
('\r':rest) -> splitLines rest
('\n':rest) -> splitLines rest
_ -> []
isLineTerminator c = c == '\r' || c == '\n'
Run Code Online (Sandbox Code Playgroud)
这是如何工作的,什么是真正的附加呢?我没有看到case表达式的结果是如何预先连接到的.也许我只需要有人详细解释这些功能的评估.我必须遗漏一些非常重要的东西.
提前致谢!
编辑:我知道,这是一个复制粘贴失败.抱歉.
编辑2:似乎我的困惑在于这些功能实际/返回/我现在已经解决了.谢谢你们的答案,终于点击了!我很感激!
我一直在阅读Programming Clojure,我在理解Stuarts主Java Interop示例时遇到了一些麻烦.他扩展了DefaultHandler,并创建了一个startElement方法,然后将该处理程序传递给XML解析器.我不明白的是,到底发生了什么.他的startElement实现是否覆盖了DefaultHandler中定义的实现?我糊涂了.我没有使用Java的经验,也没有面向对象的经验.
谢谢!
好吧,我一直在搞乱Ruby中不同的排序算法; 主要是变化快速排序.我有一个双枢轴快速排序的版本,可以选择随机枢轴.因此,当随机枢轴落在阵列的开始或结束时,奇怪的事情开始发生.我做了一些调查,并将其归结为这种奇怪的现象.
//irb output #using Ruby 1.8.6 and irb 0.9.5
irb> foo = [1,2,3,4] #create my array, very generic for an example
=> [1, 2, 3, 4]
irb> foo[0],foo[1],foo[2],foo[3] = foo[1],foo[0],foo[3],foo[2]
=> [2, 1, 4, 3] #array swaps inside values with edge values fine.
irb> foo
=> [2, 1, 4, 3] #values have changed correctly.
irb> foo = [1,2,3,4] #reset values
=> [1, 2, 3, 4] #next I am going to try and swap the element foo[0] with itself
irb> …Run Code Online (Sandbox Code Playgroud) clojure ×6
java ×2
css ×1
git ×1
git-rebase ×1
haskell ×1
html ×1
java-interop ×1
networking ×1
recursion ×1
reflection ×1
ruby ×1
swing ×1