小编Xiu*_* Xu的帖子

如何从clojure中的文件中读取n行

我想使用clojure从文件中读取前n行.这是我的代码:

(defn read-nth-line [file]
  (with-open [rdr (reader file)]
    (loop [line-number 0]
      (when (< line-number 20)
            (nth (line-seq rdr) line-number)
            (recur (inc line-number))))))
Run Code Online (Sandbox Code Playgroud)

但是当我跑

 user=> (read-nth-line "test.txt")

 IndexOutOfBoundsException   clojure.lang.RT.nthFrom (RT.java:871)
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会出现这样的错误.

clojure

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

如何在clojure中随机生成一个长数字

有一个长整数m = 38941629971148227236N.我想生成1 <e <m之间的数字e,并检查e是否满足此要求:gcd(e,m)= 1.我的方法是使用(long(rand m))随机生成e,我得到一个警告:

IllegalArgumentException Value out of range for long:
1.7166121075068025E19  clojure.lang.RT.longCast (RT.java:1254) 
Run Code Online (Sandbox Code Playgroud)

我的代码是:

(defn find-e [m]
(loop [e (long (rand m))]
    (if (= 1 (gcd e m)) e
        (recur (long (rand m))))))
Run Code Online (Sandbox Code Playgroud)

我知道结果超出范围很长,但我不知道有没有办法解决这个问题?

clojure

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

无法在Mac的终端中运行android adv

我的操作系统是MacOS,我正在开发一个Android移动应用程序.我已经下载了android studio并设置了android_home环境.我已经安装了marshmallow6.0 SDK.我android avd在终端尝试并未能打开avd.

java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Label.setText(Unknown Source)
at com.android.sdkuilib.internal.widgets.AvdDetailsDialog.displayValue(AvdDetailsDialog.java:156)
at com.android.sdkuilib.internal.widgets.AvdDetailsDialog.createContents(AvdDetailsDialog.java:73)
at com.android.sdkuilib.ui.SwtBaseDialog.open(SwtBaseDialog.java:93)
at com.android.sdkuilib.internal.widgets.AvdSelector.onDetails(AvdSelector.java:964)
at com.android.sdkuilib.internal.widgets.AvdSelector.access$600(AvdSelector.java:86)
at com.android.sdkuilib.internal.widgets.AvdSelector$11.widgetDefaultSelected(AvdSelector.java:728)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.notifyListeners(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1.open(AvdManagerWindowImpl1.java:146)
at com.android.sdkuilib.repository.AvdManagerWindow.open(AvdManagerWindow.java:94)
at com.android.sdkmanager.Main.showAvdManagerWindow(Main.java:438)
at com.android.sdkmanager.Main.doAction(Main.java:380)
at com.android.sdkmanager.Main.run(Main.java:151)
at com.android.sdkmanager.Main.main(Main.java:117)
Run Code Online (Sandbox Code Playgroud)

我不知道是什么unknow source …

android virtual-device-manager

5
推荐指数
0
解决办法
155
查看次数

使用clojure将具有不共同元素的序列返回到两个原始序列

我有两个序列,可以是矢量或列表.现在我想返回一个序列,其元素与两个序列不相同.

这是一个例子:

(removedupl [1 2 3 4] [2 4 5 6]) = [1 3 5 6]
(removeddpl [] [1 2 3 4]) = [1 2 3 4]
Run Code Online (Sandbox Code Playgroud)

我现在很困惑.这是我的代码:

(defn remove-dupl [seq1 seq2]
    (loop [a seq1 b seq2]
        (if (not= (first a) (first b))
            (recur a (rest b)))))
Run Code Online (Sandbox Code Playgroud)

但我不知道接下来该做什么.

tail-recursion clojure

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

为什么在clojure的输出结尾有一个"nil"

我想知道为什么在clojure的输出结尾有一个"nil".这是我的代码:

(defn foo [x &argu]
    (print x &argu))
Run Code Online (Sandbox Code Playgroud)

另一个问题是"和论证"在这里意味着什么?一个可变参数或其他什么?非常感谢!

clojure

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

如何在clojure中预测为真时返回相应的数字

我想返回一个数字的因子,这些因素应该在给定的范围内.喜欢:

user=> (factors (range 1 10) 12)
(1 2 3 4 6)
Run Code Online (Sandbox Code Playgroud)

我写了一些代码,但它们返回true或false.我的代码是:

(defn factors [range num]
   (map #(= (mod num %) 0) range))
Run Code Online (Sandbox Code Playgroud)

测试结果:

user=> (factors (range 1 10) 12) 
(true true true true false true false false false)
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得数字(1 2 3 4 6)而不是真实和错误?非常感谢!

clojure

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

在clojure中使用惰性序列

我想知道lazy-seq返回有限列表或无限列表.有一个例子,

(defn integers [n]
    (cons n (lazy-seq (integers (inc n)))))
Run Code Online (Sandbox Code Playgroud)

当我跑的时候

(first integers 10)
Run Code Online (Sandbox Code Playgroud)

要么

(take 5 (integers 10))
Run Code Online (Sandbox Code Playgroud)

结果是10和(10 11 12 13 14).但是,当我跑

(integers 10)
Run Code Online (Sandbox Code Playgroud)

该过程无法打印任何内容,无法继续.有没有人可以告诉我为什么和laza-seq的用法.非常感谢!

clojure lazy-sequences

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

在clojure中同时更新两个值

我想知道如何同时更新两个值.例如,我想同时增加月份和减少年龄.我的代码是

user=>(def users {:month 1 :age 26})
user=>(update-in users [:month :age] inc dec)
Run Code Online (Sandbox Code Playgroud)

我知道这种语法不正确,但我该如何解决这个问题呢?我需要同时更新.因为如果我先更新月份然后更新年龄,那么当我更新第二张地图时,第一张地图将丢失.还是有其他方法可以解决这个问题吗?

clojure update-in

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

如何通过终端安装create-react-app

我正在通过终端安装create-react-app.我检查过node.js版本是4.5.0,高于此处的要求.并且npm的版本是2.15.9.然后我输入命令npm install -g create-react-app,出现了这样的错误信息:

npm ERR! tar.unpack untar error /Users/xiufenxu/.npm/create-react-app/0.6.0/package.tgz
npm ERR! Darwin 16.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "create-react-app"
npm ERR! node v4.5.0
npm ERR! npm  v2.15.9
npm ERR! path /usr/local/lib/node_modules/create-react-app
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/create-react-app'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/create-react-app']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES', …
Run Code Online (Sandbox Code Playgroud)

node.js create-react-app

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

如何返回地图中的所有关键字

我想返回地图中出现的所有关键字.例如:

{:a 1 :d 4 :e 4}
Run Code Online (Sandbox Code Playgroud)

我想得到(:a:d:e).我的代码是

(get {:a 1 :d 4 :e 4} :keywords)
Run Code Online (Sandbox Code Playgroud)

它返回零.那么如何解决呢?

dictionary clojure

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

从两个序列中删除重复元素

我想知道如何从两个序列中删除重复元素并组合两个序列.例如,

user=>(remove-dup [1 4 7 10 16] [2 7 18 4])
(1 2 10 18 16)
Run Code Online (Sandbox Code Playgroud)

我的代码是:

(defn remove-dup [l1 l2]
  (let [list (concat l1 l2)]
    (loop [l list res '()]
        (if (>= (second (first (frequencies l))) 2) 
            (recur (rest l) res)
            (recur (rest l) (conj res (first (first l))))))))
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,我收到了错误消息:

IllegalArgumentException Don't know how to create ISeq from: java.lang.Long  clojure.lang.RT.seqFrom (RT.java:528)
Run Code Online (Sandbox Code Playgroud)

我该如何修复此代码.谢谢!

clojure

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